我是 Matlab 的初学者,遇到过元胞数组,但我不确定如何使用索引。
我通过执行以下操作创建了一个包含 5 行和 3 列的元胞数组:
A = cell(5,3);
现在是否可以像普通数组的嵌套 for
循环一样先按行然后按列遍历元胞数组?
for i=1:5
for j=1:3
A{i,j} = {"random"} //random numbers/ string etc
end
end
对于元胞数组,您有两种索引方法,即圆括号(即(...)
)和大括号(即 {...}
).
让我们创建一个元胞数组以用于示例:
A = {3, 9, 'a';
'B', [2,4], 0};
使用括号建立索引返回单元格数组的一部分作为单元格数组。例如
A(:,3)
返回一个 2×1 元胞数组
ans =
'a'
0
例如,使用大括号编制索引会返回该单元格的CONTENTS
A{1,3}
返回单个字符
ans =
a
您也可以使用括号返回单个单元格,但它仍然是一个单元格。您还可以使用大括号返回多个单元格,但这些返回为 comma separated lists ,这有点高级。
当分配给一个单元格时,非常相似的概念适用。如果您使用括号进行分配,则必须分配适当大小的单元格矩阵:
A(:,1) = {1,1}
如果您使用括号分配单个值,那么您必须将它放在一个单元格中(即 A(1) = 2
会给您一个错误,因此您必须执行 A( 1) = {2}
)。所以最好使用大括号,因为这样你会直接影响单元格的内容。所以去是对的
A{1} = 2
这等同于 A(1) = {2}
。请注意,您所做的 A{1} = {2} 不会给出错误,但它会在您的单元格中嵌套一个单元格,这不太可能是您想要的。
最后,如果您的一个单元格内有一个矩阵,则 Matlab 允许您直接索引到该矩阵,如下所示:
A{2,2}(1)
ans =
3
我是一名优秀的程序员,十分优秀!