我正在尝试使用Matlab比较工具比较两个.mat文件。在比较结果中,NaN值被突出显示意味着它们是不同的(即使它们不是)。如何在使用Matlab比较工具时处理NaN值。
答案 0 :(得分: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
答案 1 :(得分:4)
NaN
“不是数字”。引用documentation,
通过数学上未定义的操作(如0.0 / 0.0和inf-inf)获得NaN。
因此,从数学上讲,NaN之间甚至没有定义平等。例如;尝试计算0/0给出NaN,0/0 + 1也是如此。你会说0/0和0/0 + 1相等吗?你会说他们不一样吗?两者都不存在:0/0和0/0 + 1根本不存在。
另一方面,以编程方式,NaN
是一个定义明确的“值”,NaN
之间的平等也是如此:即NaN
始终不等于NaN
}。这种行为的基本原理可能是数学上NaN未定义的事实,因此它不能与自身相等。