2017-06-26 10 views
0

私は2つの行列:finalEnergy{1,j}(i)finalZC{1,j}(i)を持っています。 finalEnergy{1,1}(i)は、1 x 611の要素を有し、finalZC{1,1}(i)は、595の要素を有する。私はfinalZC{1,1}(i)に611個の要素を埋めなければならない。 finalZC{i,j}の各セルのサイズをfinalEnergy{i,j}のセルのサイズにどのように埋め込むか。私のコードは、あなたがあなたのループ内でいくつかのバグや実装エラーを持っていますが、アイデアは右であるmatlabの行列でゼロをパディングする方法

for j=1:length(finalEnergy) 
    for i=1:length(finalEnergy{1,j}) 
    if(length(finalEnergy{1,j})<length(finalZC{1,j})) 

     lenFE=length(finalZC{1,j})-length(finalEnergy{1,j}); 

     finalEnergy{1,j})(i)=padarray(finalEnergy,lenFE,padding); 
    end 
    end 
end 
+0

これらのサイズは常にサイズですか?もしそうなら、なぜあなたは 'if'ステートメントを持っていますか?あるいは時々サイズが違うのでしょうか? –

+0

これは常に同じサイズではありません.jが変更されると変化します。 –

答えて

0

を下回っています。あなたが正しく理解していれば、iをここにループする必要はありません。

for j=1:size(finalEnergy, 2) 
    if(numel(finalEnergy{1, j})>numel(finalZC{1, j})) 
     lenFE=length(finalEnergy{1, j})-length(finalZC{1, j}); 
     finalZC{1, j}=padarray(finalZC{1, j},[0 lenFE/2], 0); 
    end 
end 

これを行うには、より効率的な方法が必要です。これはまた、lenFEが常に偶数であることを前提としています。この回答を後ほど編集してより一般的な解決策にすることができます。

+0

finalEnergy {i、j}は常に1つの行しか使用していないためfinalEnergy {1、j}のままです。 finalEnergy {1、j}(i)で、iはfinalEnergy {1、j}の1 *ある値の行行列です。どのように私はより良い理解のためにマットファイルを送信することができます –

+0

私はあなたが今よく理解していると思う、更新された答えを参照してください –

関連する問題