1
在数据矩阵中有很多列(2个向量)具有不同的长度。我想填充具有最小长度的零。零的数量应该是如何在填充零后使单元阵列具有相同的长度
[max(length(Vector 1))-min(length(Vector 2))]
现在我想在单元格中添加具有最小长度的零。并且如果列的长度相同而没有问题,则要在每列中使长度相等。
在数据矩阵中有很多列(2个向量)具有不同的长度。我想填充具有最小长度的零。零的数量应该是如何在填充零后使单元阵列具有相同的长度
[max(length(Vector 1))-min(length(Vector 2))]
现在我想在单元格中添加具有最小长度的零。并且如果列的长度相同而没有问题,则要在每列中使长度相等。
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
'cellfun(@(x) x,零(1,n-numel(x))],数据,'UniformOutput',假)' –
x是 –
'x'是输入变量'data'中的每个单元格。考虑'cellfun'是一个循环。第一次迭代是'data {1} = [data {1},零(1,n-numel(data {1}))]'。请注意,您需要在我的评论中写入','UniformOutput',false'。没有它,它就无法工作。 –