2016-05-13 6 views
1

​​ データ行列には、長さの異なる複数の列(2つのベクトル)があります。最小の長さのゼロを埋めたい。 0の数はパディング後のセル配列の長さをゼロにする方法

[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) 

この時点で、ちょうど `関数cellfun(@(x)は[

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

にループを使用することがより直感的かもしれません –

+0

その中のxは何ですか? –

+1

xは、入力変数 'data'の各セルです。xは、0、1、n-numel(x))、data、 'UniformOutput' 'cellfun'をループとみなしてください。最初の反復は 'data {1} = [data {1}、0、n-numel(data {1}))]'です。私のコメントに書いたように '、 'UniformOutput'、false'を含める必要があることに注意してください。それなしでは動作しません。 –

関連する問題