while文の条件がfalseになってもループが続いてしまいます
15 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
while文の条件がfalseになってもループが続いてしまい,困っています.
添付したプログラムの22行目のwhile文において,
xの値を見てみると,while文の条件(D<=0)がfalseになっても,同じwhile文内をループしているようです.
何が原因なのでしょうか?
0 Kommentare
Antworten (1)
Shunichi Kusano
am 10 Dez. 2020
コード拝見しましたが、2点ほど気になる点があります。
1.rLがベクトルなので、xもベクトルになってしまう。結果としてDもベクトルになってしまう。
D<=0という条件でのwhileなので、おそらくDは単一の数字(スカラ)を想定されているのではないかと思います。ですが現在の仕様だと初期値ではスカラなのにwhile文が始まったらベクトルに書き換わっています。これは想定通りでしょうか?
2.whie文の中をみると常に同じ計算が繰り返されるだけで値が更新されない
whileループの中を見てみますと、演算をしている部分は次の3行です。
x=p;
x=x+rL; % x = p + rL
D=abs(p)-abs(x);
これが繰り返されることになりますので、毎度同じ結果が出ることになります。おそらくpがループの度に更新されるべきだと思うのですが、いかがでしょうか。
2 Kommentare
Shunichi Kusano
am 16 Dez. 2020
値をプロットするには2つやり方があります。
プロットだけが欲しい場合、
plot(x1,y1); % x1,y1は適当な値
hold on; % 描画結果を残す
plot(x2,y2); % 描画(hold onしているので結果として重ね書きとなる)
という形で、一度プロットした結果はhold onで保持できるので、whileの中でhold on とplotをセットで使うことで、最終的には全データのプロットを見ることができます。
データも欲しい場合(こちらが推奨)、
whileの中で、xを保存しておく用の配列を用意しておいて、それに随時xの値を格納していきます。
xdata = zeros(想定するxの全データ数(不明なら適当に大きい数にしておいて、計算後不要部分をカットでもいいです));
i = 1;
while ...
x = ほにゃらら; % xの値を計算
xdata(i) = x; % xdataにxを保存
i = i+1; % iを更新
end
Siehe auch
Kategorien
Mehr zu Annotations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!