Matlab中的运算符不是奇怪的

as3*_*unt 2 math floating-point matlab

在我的代码中,我需要检查向量的两个连续成员之间的差异对是否相等,然后相应地做一些事情.现在这里有一个奇怪的事情发生在Matlab上说如果我有两对连续两个数字,所以当我使用时

(x(i+3) - x(i+2)) ~= (x(i+1)-x(i)) 
Run Code Online (Sandbox Code Playgroud)

1即使双方都是平等的,它也会给我一个机会.我认为原因是有一些圆整错误但不太确定.例如,

x = [0,0.16,0.32,0.48,0.64,0.80];
>>a = x(5) - x(4)

a =

 0.1600

>>b = x(4) - x(3)

b =

 0.1600

>>a-b

ans =

5.5511e-17
Run Code Online (Sandbox Code Playgroud)

知道怎么摆脱这个问题吗?有没有什么不同的策略绕过~===经营本IND的问题?

先谢谢你们.

Kav*_*vka 5

您不应该以相同的方式比较浮点数.abs(a-b)<eps如果您正在测试相等性,则使用更可靠的方法.

  • @ArunavDev MATLAB没有宏,[eps](http://www.mathworks.com/help/techdoc/ref/eps.html)是一个函数. (2认同)
  • 我可能会建议测试类似于:abs(ab)<10*eps(a)以获得最佳结果. (2认同)