连接不同大小的单元阵列

时间:2015-04-26 07:38:52

标签: matlab

如果你能帮我连接两个不同大小的单元阵列,我们将不胜感激。例如,考虑单元格数组:

a={'p' 'e' 't' 'k'; 2 3 4 6; 3 5 9 8; 5 4 1 0; 8 9 6 5};
b={'a' 'v'; 1 2; 3 4; 0 5; 6 8}; 

数组b可能具有不同的大小,具体取决于迭代结果。我想组合这些单元格数组,以便最终得到

c={'p' 'e' 't' 'k';2 3 4 6; 3 5 9 8; 5 4 1 0; ...
    8 9 6 5;'a' 'v' NaN NaN;1 2 NaN NaN; 3 4 NaN NaN;0 5 NaN NaN; 6 8 NaN NaN};

如果每次运行代码时ab的尺寸不同,我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

你首先需要"垫"在较小的单元阵列中,您可以连接两个单元阵列with standard methods。在对您的问题的评论中,您表示要使用NaN填充矩阵。假设数组b的宽度小于或等于数组a的宽度,则可以这样做:

a={'p' 'e' 't' 'k';2 3 4 6; 3 5 9 8; 5 4 1 0;8 9 6 5};
b={'a' 'v' ;1 2; 3 4;0 5; 6 8};

sa = size(a);
sb = size(b);    
columns_to_pad = sa(2) - sb(2);  

padding = num2cell(NaN*ones(sb(1), columns_to_pad));    
b_padded = [b, padding];    
c = [a; b_padded];