我正在尝试使用 Matlab 比较工具比较两个 .mat 文件。在比较结果中,NaN 值突出显示,表示它们不同(即使它们不是)。使用 Matlab 比较工具时如何处理 NaN 值。
问问题
515 次
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 回答