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 个评论
Douglas Bock
Douglas Bock 2017-4-21
The loop keeps iterating, even if the first condition is no longer met.
Stephen23
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
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.

hmi amid
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

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by