【问题标题】:How to use cell arrays in Matlab?如何在 Matlab 中使用元胞数组?
【发布时间】:2014-10-26 13:20:51
【问题描述】:

我是使用 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

【问题讨论】:

    标签: arrays matlab cell


    【解决方案1】:

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

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

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

    使用括号进行索引会返回元胞数组的一部分作为 CELL ARRAY。例如

    A(:,3)
    

    返回一个 2×1 元胞数组

    ans =
    
        'a'
         0
    

    使用大括号进行索引返回该单元格的 CONTENTS,例如

    A{1,3}
    

    返回单个字符

    ans =
    
    a
    

    您也可以使用括号返回单个单元格,但它仍然是一个单元格。您也可以使用大括号返回多个单元格,但这些单元格返回为comma separated lists,这有点高级。

    分配给单元格时,应用非常相似的概念。如果您使用括号进行分配,那么您必须分配一个适当大小的 cell 矩阵:

    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
    

    【讨论】:

      【解决方案2】:

      例如:

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

      应该可以正常工作
      只需跳过 =

      右侧的 { }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-09
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多