0

for ループを使用して cell 配列でいくつかの計算を実行しようとしていますが、最後に最後のループの結果のみが表示されます。Matlab にすべてのループの結果を表示してもらいたいです。ここにコードがあります:

slope=[];
time=[];
position= [];


for p=1:max(L)  % max L gives the number of result{n}. so if max(L)=6 we have from result{1} to result{6} and therefore 6 final values that i want to get%
   a=result{n}(:,1);
   b=result{n}(:,2);
end


B = [ones(length(a),1) a] \ b  % this is to obtain the slope and intercept of a lin. regresion

slope = B(2)

time = result{n}(end,1)-result{n}(1:1)
position = (slope.*result{n}(end,1)+intercept)-(slope.*result{n}(1:1)+intercept)

私が得るものである出力の瞬間:

勾配 =

4.4089

時間 =

0.5794

位置 =

2.5546

この結果は正しいです。ただし、これらの値は result{6} で取得されたものであり、これより前の値が必要です。

どんな助けでも大歓迎です!

前もって感謝します!

4

3 に答える 3

1

あなたはインデックスを混乱させています...コードで何をしたかを理解するのは少し難しいですが、次のようなものかもしれません(あなたが与えたコードにはresult宣言されていないため、疑似コード):

slope=zeros(1,max(L)); % Pre allocate zeros, one index for each interation
time=zeros(1,max(L));
position=zeros(1,max(L));
a=zeros(1,max(L));
b=zeros(1,max(L));

for p=1:max(L)  % max L gives the number of result{n}. so if max(L)=6 we have from result{1} to result{6} and therefore 6 final values that i want to get%
   a(p)=result{p}(:,1);
   b(p)=result{p}(:,2);
   B = [ones(length(a( p ),1) a( p )] \ b( p)  % this is to obtain the slope and intercept of a lin. regresion
   slope( p) = B(2)
   time( p) = result{p}(end,1)-result{p}(1:1)
   position( p) = (slope( p ).*result{p}(end,1)+intercept)-(slope ( p) .*result{p}(1)+intercept)
end

position(6) は値を取得し、position(5) は前の値を取得します。

于 2013-08-14T19:24:15.873 に答える
0

ループ内ですべての計算を行い、「;」でブロックしないでください。代わりは。ループから出た後に結果を取得すると、最後の結果のみが取得されます。

于 2013-08-15T20:02:24.283 に答える