为什么替换矩阵的NaN不能用k(k == NaN)= SomeNumber,其中k是要操作的矩阵

时间:2016-07-26 10:28:18

标签: matlab

给出一个矩阵: -

k = [1   2   3  ;
     4   5   6  ;
     7   8  NaN];

如果我想用0替换一个数字,比如2,我可以使用:k(k==2) = 0。它正常工作,并提供以下预期答案: -

k =

     1     0     3
     4     5     6
     7     8   NaN

但是,如果我尝试替换NaN,为什么这不起作用,即k(k==NaN) = 0给出了这个:

k =

     1     2     3
     4     5     6
     7     8   NaN

虽然我可以使用k(isnan(k))=0获得所需的结果。但为什么第一种方法不起作用?

1 个答案:

答案 0 :(得分:17)

因为NaN==NaN0

不是数字不等于数字吗?不是真的,它们不是数字,但不一定是同一个东西。这是设计的。

0/0 == Inf-Inf?绝对不是。两者都是NaN

Read more here