如何在Matlab中使用单元格数组?

时间:2014-09-02 09:56:28

标签: arrays matlab cell

我是使用Matlab的初学者,遇到了单元格数组,但我不确定如何使用索引。

我通过执行以下操作创建了一个包含5行和3列的单元格数组:

A = cell(5,3);

现在可以先按行遍历单元格数组,然后像常规数组的嵌套for循环一样进行col?

    for i=1:5
        for j=1:3
           A{i,j} = {"random"} //random numbers/ string etc
        end
    end

2 个答案:

答案 0 :(得分:5)

对于单元格数组,您有两种索引方法,即括号(即(...))和大括号(即{...})。

让我们创建一个单元数组用于示例:

A = {3,   9,     'a'; 
     'B', [2,4], 0};

使用paranthesis进行索引会返回单元格数组 AS A CELL ARRAY 的一部分。例如

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

答案 1 :(得分:2)

例如:

for i=1:5
    for j=1:3
       A{i,j} = rand(3)
    end
end

应该完美无缺 只需跳过=

右侧的 {} 即可