【问题标题】:How to create an empty array of arrays in matlab?如何在matlab中创建一个空数组?
【发布时间】:2012-05-31 15:50:10
【问题描述】:

我正在尝试初始化一个空数组,该数组本身包含 5 个空数组。但是 matlab 似乎只是创建了一个简单的空数组变量。以下是我尝试过的两种语法。如果在matlab中可以的话,有什么想法吗?

bins = [ []; []; []; []; []  ];

bins = repmat([], 5, 1)

【问题讨论】:

    标签: matlab


    【解决方案1】:

    deal 是这样一个赋值的好函数:

    [bins{1:5}] = deal([]);
    

    这将创建一个元胞数组bins,其中每个元素bins{i} 包含一个空数组。

    【讨论】:

    • 完全预分配一个二维数组怎么样?在这种情况下,deal 中的 [] 本身需要是 m 个空格。使用空成员而不是使用 zeros 来初始化它会更好,如果有可能进入数组的内容本身的值为 0(否则您无法区分数据中的零或阻止您的错误分配给那个位置)。
    【解决方案2】:

    MATLAB 只有矩阵,即(可能是多维的)数值类型(或字符或逻辑值)数组。要将其他结构分组到一个变量中,请尝试cell array,例如

    bins = { []; []; []; []; []  };
    

    然后您必须使用大括号访问外部数组的元素,例如bins{2} 而不是 bins(2)

    【讨论】:

      【解决方案3】:

      另一个初始化它的技巧:

      >> bins = {}      %# just to make sure `bins` wasn't used before
      >> bins{5} = []
      bins = 
          []    []    []    []    []
      

      【讨论】:

        猜你喜欢
        • 2011-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-21
        • 2012-01-06
        • 1970-01-01
        • 2020-02-09
        • 1970-01-01
        相关资源
        最近更新 更多