Overwriting While-loop conditional with +Inf
1 回表示 (過去 30 日間)
古いコメントを表示
In my code, I have this loop:
while a~=1 && b <= totCycles
...
end
I want the loop to run as long as the conditions hold, obviously.
Sometimes, however, I do not want the second condition. I want to effectively make it always true.
Setting totCycles = +Inf looke like the right way to do this, but it doesnt seem to work!
Any ideas why this might be? Or any other workaround?
Many Thanks
Doug
3 件のコメント
Stephen23
2017 年 4 月 21 日
@Douglas Bock: how do you know that the first condition is not met? How did you check this? Are the two values integer or floating point?
回答 (2 件)
Andrew Newell
2017 年 4 月 21 日
編集済み: Andrew Newell
2017 年 4 月 21 日
MATLAB evaluates a logical expression like your while condition from left to right. If a==1, it knows the expression is false and does not even look at the second part. So I suspect that a is a floating point number, and when you think it is equal to 1 it is not exactly equal to 1. See this FAQ.
0 件のコメント
hmi amid
2017 年 4 月 21 日
You can try this :
while a~=1 && (b <= totCycles || idontcare_b)
...
idontcare_b = true % in a place you dont care about the value of b
end
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!