【问题标题】:Error margin for a value in an if statement in Matlab?Matlab中if语句中值的误差范围?
【发布时间】:2013-02-14 23:27:51
【问题描述】:

我有一个简单的 for 循环:

for n=0:0.001:100
  if x<100
    do something
  end
end

但是,由于代码的复杂性,x 的最终值在 100.345 左右,因此循环中断。

我想在if x&lt;100 ± 0.4 处应用一个误差范围,以便语句为真并且循环重新开始。

这怎么可能?

【问题讨论】:

    标签: matlab loops error-handling margins


    【解决方案1】:

    使用逻辑和 (&amp;&amp;) 运算符创建一个范围。只有当两个语句都为真时,才会执行条件代码。

    e = 0.4;    
    v = 100;
    if x<v+e && x>v-e
        do something
    end 
    

    如果你愿意,可以在条件代码中设置n=0来重启循环。

    【讨论】:

      【解决方案2】:

      检查两个浮点数是否在某个容差范围内的标准方法是计算绝对差,然后将其与容差进行比较。在您的情况下,它看起来像这样:

      expected = 100;
      tolerance = 0.4;
      if abs(x - expected) < tolerance
          % do something
      end
      

      【讨论】:

        【解决方案3】:

        我很惊讶没有人提到这一点,但是如果你想添加一个误差范围,你只需要在一个方向上做。

        这是因为您只检查 x 是否小于比较值。因此,您可以简单地这样做:

        for n=0:0.001:100
          if x<100+0.4
            % do something
          end
        end
        

        当然你也可以只用x&lt;100.4

        【讨论】:

          猜你喜欢
          • 2017-10-01
          • 2014-01-07
          • 2012-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-28
          • 1970-01-01
          相关资源
          最近更新 更多