给定一个矩阵:-
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
。但为什么第一种方法不起作用?
最佳答案
因为 NaN==NaN
是 0
。
不是数等于不是数?不是真的,它们不是数字,但不一定是同一件事。这是设计使然。
是 0/0 == Inf-Inf
吗?绝对不是。不过两者都是 NaN
。
关于matlab - 为什么替换矩阵的 NaN 不适用于 k(k==NaN) = SomeNumber ,其中 k 是要操作的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38587351/