Matlab比较工具NaN值

时间:2013-12-24 13:45:12

标签: matlab matrix comparison mat-file

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

enter image description here

2 个答案:

答案 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未定义的事实,因此它不能与自身相等。