我想初始化一个空数组,它本身包含5个空数组。但matlab似乎只是创建一个简单的空数组变量。以下是我尝试过的两种语法。任何想法,如果它可能在MATLAB中?如何在matlab中创建一个空数组的数组?
bins = [ []; []; []; []; [] ];
bins = repmat([], 5, 1)
我想初始化一个空数组,它本身包含5个空数组。但matlab似乎只是创建一个简单的空数组变量。以下是我尝试过的两种语法。任何想法,如果它可能在MATLAB中?如何在matlab中创建一个空数组的数组?
bins = [ []; []; []; []; [] ];
bins = repmat([], 5, 1)
MATLAB只包含矩阵,即(可能是多维的)数值类型(或字符或逻辑值)数组。要将其他结构分组到一个变量中,请尝试使用cell array
然后,您必须使用大括号访问外部数组的元素,例如, bins{2}
而不是bins(2)
。
deal
是进行这种分配了良好的功能:
[bins{1:5}] = deal([]);
这就形成了一个单元阵列bins
,其中每个元素包含bins{i}
空数组。
另一个技巧初始化此:
>> bins = {} %# just to make sure `bins` wasn't used before
>> bins{5} = []
bins =
[] [] [] [] []
如何充分预分配一个二维数组?在那种情况下,'deal'里面的'[]'本身需要m个空格。使用空成员初始化它而不是使用'zeros'会更好,如果有机会进入数组本身的值为0(否则无法区分数据中的零或阻止您的错误分配给那个位置)。 – Elliot