- yi = 18 になったら、yi = 5 になるまで1ずつ減少させ続ける
- yi = 5 になったら、yi = 5 になるまで1ずつ増加させ続ける
matlabについての質問です。 跳ね返るプログラムを作りたいです。
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (1)
Kazuya
le 5 Jan 2019
Modifié(e) : Kazuya
le 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 commentaires
Voir également
Catégories
En savoir plus sur ループと条件付きステートメント dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!