我使用MEX创建了一个稀疏矩阵,并使用MATLAB创建了一个稀疏矩阵。为了填写矩阵的值,我使用了相同的公式。 现在检查两个矩阵是否相等,我使用result =(A == B)。结果为所有索引返回1,这意味着所有矩阵元素都相等。 但是如果我找到(A-B)它会返回一些索引,这表明在这些索引处,这些值是非零的。这怎么可能?
注意:当我比较这些指数的值时,它显示相等!
答案 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函数检查A
和B
中是否有任何无穷大,如下所示:
any(isinf(A(:)))
any(isinf(B(:)))
如果你的值为1(即为真),那么无穷大的存在可能是你出现差异的根源。