我是Matlab的初学者,在使用过程中遇到了cell数组,但我不确定如何为其使用索引。
我通过以下方式创建了一个5行3列的cell数组:
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)
ans =
'a'
0
使用括号索引返回该单元格的内容,例如:
A{1,3}
返回一个单一的字符
ans =
a
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
例如:
for i=1:5
for j=1:3
A{i,j} = rand(3)
end
end
应该可以完美地工作
只需在等号右侧跳过{ }