2011-06-06 31 views
2

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

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

+1

A-B的结果是什么?如果真的很小,不平等可能是数值精度有限的结果。 – WebMonster 2011-06-06 16:03:11

+2

显示一个值对的例子,它们相等但A-B不为零。 – 2011-06-06 16:13:58

回答

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值的事实结果。您可以检查,看看是否有AB任何无穷通过使用功能ISINF像这样:

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

,如果你得到的1(即真)值,然后无穷的存在是可能的你的差异的来源。

相关问题