cell2mat:使用NaN填充

时间:2017-09-10 09:59:45

标签: matlab

主要使用单元格阵列在2维中工作,这可能是您熟悉的主题:

a{1,1}=rand(5,1);
a{2,1}=rand(10,1);
b=cell2mat(a);
size(b) 

其输出大小为[15 1]。但是我会发现这样的示例结果更有用:

0.150   0.340   0.610   0.190   0.740   NaN     NaN     NaN     NaN     NaN
0.240   0.920   0.270   0.770   0.190   0.290   0.090   0.580   0.680   0.550

是否有一种用NaNs填充cellarray的通用方法(以与上面类似的方式),因此它们可以很容易地转换为矩阵?

由于图形上存在很多混淆(请原谅我的绘图技巧)我的意思是,1,2描绘单元阵列,3是NaN填充。 1,2,3组合应易于转换为矩阵。

enter image description here

1 个答案:

答案 0 :(得分:1)

% find the long vector
isLong=(length(a{2,1})>length(a{1,1}))+1;
isShort=setdiff([1 2],isLong);

% result
b=[a{isLong,1}  [a{isShort,1};nan(length(a{isLong,1})-length(a{isShort,1}),1)]]



b =

0.0796    0.6440
0.7326    0.4967
0.5137    0.9919
0.5223    0.7241
0.8144    0.3799
0.8346       NaN
0.9469       NaN
0.4866       NaN
0.1802       NaN
0.1786       NaN