matlab - Matlab 中的非运算符行为异常

标签 matlab math floating-point

在我的代码中,我需要检查向量的两个连续成员之间的差异对是否相等/不相等,然后相应地执行一些操作。 现在,Matlab 中发生了一件奇怪的事情,如果我有两对两个连续的数字,那么当我使用

(x(i+3) - x(i+2)) ~= (x(i+1)-x(i)) 

即使双方相等,它也会给我一个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

知道如何解决这个问题吗?对于此类问题,是否有任何不同的策略来绕过 ~=== 运算符?

提前谢谢大家。

最佳答案

您不应该以这种方式比较 float 是否相等。更可靠的方法是使用 abs(a-b)<eps如果您正在测试平等。

关于matlab - Matlab 中的非运算符行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12224594/

相关文章:

java - Oj 算法并发

algorithm - 计算两个位置之间的大概位置

将字符数组转换为具有 2 个小数位的 float

java - 使用百分比和 BigDecimal 进行测试

matlab - 二维矢量数据中的角点检测

python - 在 matlab 中稀疏核/相似矩阵

matlab - 在matlab中批量读取wav文件为神经网络训练集创建矩阵

matlab - 将 dos 命令输出显示为静态文本

python - 向一叠玻璃杯中加水

python - 在 Python 和 NumPy 中量化正态分布 float