【问题标题】:Different results using == and find in MATLAB使用 == 和在 MATLAB 中查找的不同结果
【发布时间】:2011-09-09 10:09:35
【问题描述】:

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

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

【问题讨论】:

  • A-B 的结果是什么?如果是非常小的不等式,可能是数值精度有限的结果。
  • 显示一个值对的示例,其中它们相等但 A-B 不为零。

标签: matlab


【解决方案1】:

我猜你有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(即真),那么无穷大的存在很可能是你的差异的根源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2013-04-09
    • 2019-01-04
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多