如何在填充零后使单元阵列长度相同

时间:2016-05-13 09:53:56

标签: matlab cell padding

This is data matrix having 2*159 cells 在数据矩阵中有这么多列(2个向量)具有不同的长度。我想填充最小长度的零。零的数量应为

[max(length(Vector 1))-min(length(Vector 2))]

现在我想在单元格中添加最小长度的零。并且如果列的长度与没有问题相同,则希望在每列中使长度相等。

1 个答案:

答案 0 :(得分:1)

n = max(max(cellfun(@(x)size(x,2),data)))
cellfun(@(x)[x, zeros(1,n-numel(x))], data, 'uni', 0)

以上是找到一个单一的最大值来填充细胞。我现在意识到你实际上想要按每列计算这个最大值:

n = max(cellfun(@(x)size(x,2),data))
cellfun(@(x,n)[x, zeros(1,n-numel(x))], data, repmat(num2cell(n),2,1), 'uni', 0)

此时,使用循环

可能更直观
for col = 1:size(data,2)
    n = max(size(data{1,col},2),size(data{2,col},2));
    for row = 1:2
         x = data{row,col};
         data{row,col} = [x, zeros(1,n-numel(x))];
    end
end