2016-05-13 67 views
1

​​ 在数据矩阵中有很多列(2个向量)具有不同的长度。我想填充具有最小长度的零。零的数量应该是如何在填充零后使单元阵列具有相同的长度

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

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

回答

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 
+1

'cellfun(@(x) x,零(1,n-numel(x))],数据,'UniformOutput',假)' –

+0

x是 –

+1

'x'是输入变量'data'中的每个单元格。考虑'cellfun'是一个循环。第一次迭代是'data {1} = [data {1},零(1,n-numel(data {1}))]'。请注意,您需要在我的评论中写入','UniformOutput',false'。没有它,它就无法工作。 –

相关问题