【发布时间】:2012-05-31 15:50:10
【问题描述】:
我正在尝试初始化一个空数组,该数组本身包含 5 个空数组。但是 matlab 似乎只是创建了一个简单的空数组变量。以下是我尝试过的两种语法。如果在matlab中可以的话,有什么想法吗?
bins = [ []; []; []; []; [] ];
bins = repmat([], 5, 1)
【问题讨论】:
标签: matlab
我正在尝试初始化一个空数组,该数组本身包含 5 个空数组。但是 matlab 似乎只是创建了一个简单的空数组变量。以下是我尝试过的两种语法。如果在matlab中可以的话,有什么想法吗?
bins = [ []; []; []; []; [] ];
bins = repmat([], 5, 1)
【问题讨论】:
标签: matlab
deal 是这样一个赋值的好函数:
[bins{1:5}] = deal([]);
这将创建一个元胞数组bins,其中每个元素bins{i} 包含一个空数组。
【讨论】:
deal 中的 [] 本身需要是 m 个空格。使用空成员而不是使用 zeros 来初始化它会更好,如果有可能进入数组的内容本身的值为 0(否则您无法区分数据中的零或阻止您的错误分配给那个位置)。
MATLAB 只有矩阵,即(可能是多维的)数值类型(或字符或逻辑值)数组。要将其他结构分组到一个变量中,请尝试cell array,例如
bins = { []; []; []; []; [] };
然后您必须使用大括号访问外部数组的元素,例如bins{2} 而不是 bins(2)。
【讨论】:
另一个初始化它的技巧:
>> bins = {} %# just to make sure `bins` wasn't used before
>> bins{5} = []
bins =
[] [] [] [] []
【讨论】: