【问题标题】:exit for-loop with if-statement使用 if 语句退出 for 循环
【发布时间】:2015-10-20 19:00:26
【问题描述】:

我有一个迭代问题,我想用for-loop 来解决。但是,一旦满足我的条件,我想打破for-loop。我有一个if-statement 来检查我的条件是否得到满足。
但是if-statement 永远不会捕捉到它应该达到的条件。
这是我的代码的简化示例。 if-statement 正是我的代码中的样子,但 for-loop 和 delta_Q 被简化了。

for ii=1:1000
    delta_Q = rand(1)*10-5
    if 0.01 < delta_Q < -0,01
        disp(['delta_Q too small, last index:', num2str(ii)])
        break
    end
end

【问题讨论】:

  • @Ander Biguri 这是代码
  • if 0.01 &lt; delta_Q &lt;-0,01 是无效的 MATLAB 语法。您不能像在 Python 中那样链接布尔条件。你必须具体做到:if delta_Q &lt; -0.01 &amp;&amp; delta_Q &gt; 0.01
  • @rayryeng 我试过了,但还是:(
  • 每次计算时打印出delta_Q,看看它的绝对值是否低于0.01。您还应该自行检查您的 if 条件,以确保它返回您期望的值。

标签: matlab loops for-loop exit


【解决方案1】:

作为rayryeng pointed out,您的代码中的这一行并没有按照您的想法执行:

0.01 < delta_Q < -0,01
  1. 布尔条件需要分开
  2. -0,01-0.01 不同,而是01
  3. 但是:

    0.01 < delta_Q && delta_Q < -0.01
    

    没有意义,因为你不能同时大于0.01 又小于-0.01

因此,如果您将条件更改为:

-0.01 < delta_Q && delta_Q < 0.01

你得到了想要的行为。


所有这些都可以通过simple debugging steps 找到。

【讨论】:

    猜你喜欢
    • 2013-12-13
    • 2017-02-02
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多