2017-09-25 22 views
0

私はループを持っており、変数Amx1 matrix (where: m>1)として出力します。ループ全体の最後に、Amxn matrixとして終了します。出力はmxn行列として返されますが、結果は上書きされ続けます。私は以前のコードのために働いていたものを含め、たくさんのものを試しましたが、うまくいきません。それにもかかわらず、私は下のコードは動作するはずですが、私はエラーがどこから来ているのかわかりません。私はこれを実行すると出力配列をループから保存するにはどうすればよいですか?

x_A = NaN(28, 3); % 28=length of A and 3=length of kk 
Z = [1,2,4,7]; 

for kk = 1: numel(Z) 
    [A,B,C] = fsave_output(Z, kk) 
    x_A  = [x_A(:,kk) A(:,kk)]; 

    % repeat the line above for B and C 

end 

、私は、エラーメッセージを得る:"は(:、3)X_Aアクセスしようとし;境界のうち、インデックスサイズ(x_norm)= [28,2]理由を"。しかし、x_A(:、1)とX_A(:、2)の出力は正しいですが、x_A(:、3)は表示されません。

ここで何をすべきかについてのアイデアや提案や助けがありますか?事前に多くの感謝!

+0

あなたがAは、すべてのループの繰り返しで、同じサイズであることを確認していますか?そして 'x_A = [x_A; [A]]; 'コードをたくさん遅くし、事前割り振りを使います。 – Gryphon

+0

お返事ありがとう@Gryphon。私が言ったように、私は本の中で多くのトリックを試みました。また、あなたの質問の最初の部分については、 'A 'は必ず各反復で同じサイズを持つ。 – User110

+0

更新されたコードでは、ループの繰り返しごとにx_A配列のサイズを変更するので、k_x = 3ではx_Aが28x2であるため、エラーが発生します – Gryphon

答えて

0

あなたがループする前に格納する行列の大きさを知っている場合は、してみてください

Z = [1,2,4,7]; 
store_A = zeros(numel(Z), m); %m is known length 
store_B = zeros(numel(Z), m); %if not known, unroll first iteration of loop 
store_С = zeros(numel(Z), m); %or store it in a cell and concatenate after the loop 

for kk = 1: numel(Z) 
    [store_A(kk,:),store_B(kk,:),store_C(kk,:)] = fsave_output(Z, kk) 
end 
+0

ありがとうございます@グリフォン。これは関数 "fsave_output"にエラーを投げます。それにもかかわらず、私は期待された結果に近いものを試しました。編集した質問をご覧ください。 – User110

関連する問題