0

私は3列とN行のマトリックスを持っています。要素を変更してその要素を表示しようとしています (セミコロンを入れないことにより)。理由により、常に行全体が表示されます。

コードとその機能は次のとおりです。

for i=1:N
   [fitG params resnorm residual]=lorentzfit3(X,Y,[]);
   PICSG(i,1)= params(2)
   PICSG(i,2)= params(5)
   PICSG(i,3)= params(8) 
end 

X と Y は N ごとに指定されます。Params には exit に 10 個のパラメーターがあります。このコードを実行したときのコマンド ウィンドウの結果を次に示します。

PICSG =
2.6288e+09

PICSG =
1.0e+09 *
2.6288    2.8425

PICSG =
1.0e+09 *
2.6288    2.8425    2.7368

要求した PICSG だけではなく、すべての PICSG が表示されるのはなぜですか?

4

2 に答える 2

1

PICSG(i,1) = params(2) を実行すると、Matlab に PICSG(i,1) を表示するように求めているのではなく、代入を行っており、セミコロンを追加しないことで MATLAB に結果を表示するように求めています。その割り当ての。

割り当ての後、セミコロンが使用されていない場合、MATLAB は変更された値だけでなく、変更されたすべての行列を表示します。

値を表示する場合は、次を使用します。

for i=1:N
   [fitG params resnorm residual]=lorentzfit3(X,Y,[]);
   PICSG(i,1)= params(2); disp(PICSG(i,1));
   PICSG(i,2)= params(5); disp(PICSG(i,2));
   PICSG(i,3)= params(8); disp(PICSG(i,3));
end 
于 2013-03-14T16:11:55.407 に答える
0

PICSG にメモリを事前に割り当てる

PICSG = zeros(N, 3)
于 2013-03-14T13:54:31.510 に答える