- yi = 18 になったら、yi = 5 になるまで1ずつ減少させ続ける
- yi = 5 になったら、yi = 5 になるまで1ずつ増加させ続ける
matlabについての質問です。 跳ね返るプログラムを作りたいです。
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
matlabについての質問です。
ある22×22の領域において、
無線端末を(1,5)から(1,18)の辺の間にランダムに配置し、
その辺を上下に動かしたいです。
そのため無線端末の位置を(xi,yi)とし、
1秒ごとにyの値を1ずつ増加させ、(1,18)に達したら今度はyの値を
1ずつ減少させ、(1,5)に達したらまたyの値を1ずつ増加させるプログラムを作りたいです。
xi = 1;
yi = obj.yi_;
if(yi >= 18)
yi = obj.yi_ - 1;
elseif(yi <= 5)
yi = obj.yi_ + 1;
end
とプログラムを組みましたが、このプログラムでは、
(1,18)に達して以降ずっと(1,18)で止まってしまいます。
どうプログラムを変えれば、上手く動きますか?
0 Kommentare
Antworten (1)
Kazuya
am 5 Jan. 2019
Bearbeitet: Kazuya
am 7 Jan. 2019
if(yi >= 18)
yi = obj.yi_ - 1;
elseif(yi <= 5)
yi = obj.yi_ + 1;
end
だと、yi が 18 以上(or 5 以下)の時にだけ - 1 (or + 1) されるので、うまくいかないのかと思います。例えば yi = 18 の次は yi = 17 となり、どちらの if 条件にも合致しなくなります。実装したいのは
ということですよね?全体像が見えないとわかりませんが、例えば obj に、今「1ずつ減少させ続ける」モードなのか、それとも「1ずつ増加させ続ける」モードなのかを識別させるプロパティでも定義する方法はどうでしょう?
if(yi == 5)
obj.upmode = true;
end
if(yi == 18)
obj.upmode = false;
end
if (obj.upmode)
yi = obj.yi_ + 1;
else
yi = obj.yi_ - 1;
end
前後のコードとあうように変更して試してみてください。
0 Kommentare
Siehe auch
Kategorien
Mehr zu ループと条件付きステートメント 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!