如何在 Matlab 中使用元胞数组?
Posted
技术标签:
【中文标题】如何在 Matlab 中使用元胞数组?【英文标题】:How to use cell arrays in Matlab? 【发布时间】:2014-10-26 13:20:51 【问题描述】:我是使用 Matlab 的初学者,遇到过元胞数组,但我不知道如何为它使用索引。
我通过执行以下操作创建了一个 5 行和 3 列的元胞数组:
A = cell(5,3);
现在是否可以先逐行遍历单元格数组,然后像嵌套的for
循环一样对普通数组进行遍历?
for i=1:5
for j=1:3
Ai,j = "random" //random numbers/ string etc
end
end
【问题讨论】:
【参考方案1】:对于元胞数组,您有两种索引方法,即括号(即(...)
)和大括号(即...
)。
让我们创建一个元胞数组以用于示例:
A = 3, 9, 'a';
'B', [2,4], 0;
使用括号进行索引会返回元胞数组的一部分作为 CELL ARRAY。例如
A(:,3)
返回一个 2×1 元胞数组
ans =
'a'
0
使用大括号进行索引返回该单元格的 CONTENTS,例如
A1,3
返回单个字符
ans =
a
您也可以使用括号返回单个单元格,但它仍然是一个单元格。您也可以使用大括号返回多个单元格,但这些单元格返回为comma separated lists,这有点高级。
分配给单元格时,应用非常相似的概念。如果您使用括号进行分配,那么您必须分配一个适当大小的 cell 矩阵:
A(:,1) = 1,1
如果您使用括号分配单个值,那么您必须将它放在一个单元格中(即A(1) = 2
会给您一个错误,所以您必须使用A(1) = 2
)。所以最好使用大括号,因为这样会直接影响单元格的内容。所以去是对的
A1 = 2
这相当于A(1) = 2
。请注意,您所做的 A1 = 2 不会给出错误,但所做的是在您的单元格中嵌套一个单元格,这不太可能是您所追求的。
最后,如果您的一个单元格中有一个矩阵,那么 Matlab 允许您直接索引到该矩阵,如下所示:
A2,2(1)
ans =
3
【讨论】:
【参考方案2】:例如:
for i=1:5
for j=1:3
Ai,j = rand(3)
end
end
应该可以正常工作 只需跳过 =
右侧的【讨论】:
以上是关于如何在 Matlab 中使用元胞数组?的主要内容,如果未能解决你的问题,请参考以下文章