【问题标题】: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<100 ± 0.4 处应用一个误差范围,以便语句为真并且循环重新开始。
这怎么可能?
【问题讨论】:
标签:
matlab
loops
error-handling
margins
【解决方案1】:
使用逻辑和 (&&) 运算符创建一个范围。只有当两个语句都为真时,才会执行条件代码。
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<100.4