【问题标题】:Storing different sized matrices into array in MATLAB在MATLAB中将不同大小的矩阵存储到数组中
【发布时间】:2013-02-17 00:06:05
【问题描述】:

我有 5 个不同维度的矩阵(n = 256、512、1024、2048 和 4096),我想知道如何将它们存储在数组中(稍后我可以在 for 循环中迭代)。我试着做 {\tt matArray = [A B C D E];} 但它说 horzcat 需要同意的尺寸。我也尝试过使用单元格,但我可能没有正确使用它们,因为我收到一条错误消息,上面写着“无法从双重单元格转换为单元格”。这是给我一个错误的代码:

A=randi(9, 256);
B=randi(9, 512);
C=randi(9, 1024);
D=randi(9, 2048);
E=randi(9, 4096);
matArray=cell(1,5);
matArray(1)=A;
matArray(2)=B;
matArray(3)=C;
matArray(4)=D;
matArray(5)=E;

你们知道发生了什么吗?提前致谢。

【问题讨论】:

  • 元胞数组使用 {} 进行索引。或者使用 matArray = [A;B;C;D;E];
  • George 是正确的,如果您不介意它们都在同一个数组中结束(; 导致垂直连接 - 由于第一个维度相同,因此可以使用)。跨度>
  • 我试过 matArray[A;B;C;D;E];之前我得到了错误:'CAT 参数尺寸不一致'。
  • 尺寸不同。 randi(9, n) 中的 9 是指矩阵中一个条目的最大值。因此,randi(9, 100) 将返回一个 100 x 100 矩阵,其中随机条目介于 1 和 9 之间。

标签: arrays matlab matrix


【解决方案1】:

使用matArray{1}=A;

这就是您寻址单元格元素的方式。您可以稍后通过matArray{1} 等引用它。

你可以用一个简单的语句用所有矩阵初始化matArray

matArray = {A; B; C; D; E};

注意使用 花括号 进行单元初始化。

【讨论】:

  • 因此,如果我在循环中引用 matArray,我会说类似:matArray{index}?
  • 如果您根据此建议初始化 matArray,matArray{1} 将返回 A 等。
  • 好的,抱歉,我还有一个问题。声明单元格的正确方法是什么?是不是就像我在上面做的那样 matArray=cell(1, 5) 为 5 个矩阵提供足够的空间?非常感谢 Floris 等人的帮助。
  • 啊,没关系,我看到你已经编辑了你的回复。再次感谢你,你太棒了!!
【解决方案2】:

你需要分号来做垂直连接。

matArray = [A; B; C; D; E];

【讨论】:

  • 这行不通,因为矩阵的维度不同。
  • 但是cellArray = { A; B; C; D; E; } 会很好
猜你喜欢
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多