1

我正在尝试使用 Matlab 比较工具比较两个 .mat 文件。在比较结果中,NaN 值突出显示,表示它们不同(即使它们不是)。使用 Matlab 比较工具时如何处理 NaN 值。

在此处输入图像描述

4

2 回答 2

4

NaN根据定义,“不是数字”。引用文档

NaN 是数学上未定义的操作(如 0.0/0.0 和 inf-inf)的结果。

因此,从数学上讲,NaN 之间甚至没有定义相等性。例如; 尝试计算 0/0 会得到 NaN,0/0+1 也是如此。你会说 0/0 和 0/0+1 相等吗?你会说他们不一样吗?两者都不存在:0/0 和 0/0+1 根本不存在。

另一方面,以编程方式,它NaN是一个定义明确的“值”,就像 's 之间的相等NaN:即,NaN总是不等于NaN。这种行为的基本原理可能是数学上的 NaN 是未定义的,因此它不能等于自身。

于 2013-12-24T15:56:59.117 回答
4

尝试isnan

   label = false(size(data)); 
   different =  true;
   label(isnan(data)) = different

您还可以使用eq

b=[1 2;nan 4];
 a=[1 2;nan 4];
 eq(a,b)

 >>  1     1
     0     1
于 2013-12-24T14:23:32.180 回答