使用==在MATLAB中查找不同的结果

时间:2011-06-06 15:51:11

标签: matlab

我使用MEX创建了一个稀疏矩阵,并使用MATLAB创建了一个稀疏矩阵。为了填写矩阵的值,我使用了相同的公式。 现在检查两个矩阵是否相等,我使用result =(A == B)。结果为所有索引返回1,这意味着所有矩阵元素都相等。 但是如果我找到(A-B)它会返回一些索引,这表明在这些索引处,这些值是非零的。这怎么可能?

注意:当我比较这些指数的值时,它显示相等!

1 个答案:

答案 0 :(得分:5)

我猜你在同一点的矩阵中有infinity的值。例如:

>> A = Inf;
>> B = Inf;
>> A == B

ans =

     1  %# They are treated as equal...

>> A-B

ans =

   NaN  %# ...but their difference actually results in NaN...

>> find(A-B)

ans =

     1  %# ...which is treated as a non-zero value.

这里的差异是由于涉及无穷大的某些操作导致NaN值的事实。您可以使用ISINF函数检查AB中是否有任何无穷大,如下所示:

any(isinf(A(:)))
any(isinf(B(:)))

如果你的值为1(即为真),那么无穷大的存在可能是你出现差异的根源。