2012-05-31 410 views
2

我想初始化一个空数组,它本身包含5个空数组。但matlab似乎只是创建一个简单的空数组变量。以下是我尝试过的两种语法。任何想法,如果它可能在MATLAB中?如何在matlab中创建一个空数组的数组?

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

bins = repmat([], 5, 1) 

回答

3

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

​​

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

4

deal是进行这种分配了良好的功能:

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

这就形成了一个单元阵列bins,其中每个元素包含bins{i}空数组。

+0

如何充分预分配一个二维数组?在那种情况下,'deal'里面的'[]'本身需要m个空格。使用空成员初始化它而不是使用'zeros'会更好,如果有机会进入数组本身的值为0(否则无法区分数据中的零或阻止您的错误分配给那个位置)。 – Elliot

0

另一个技巧初始化此:

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