Matlab:0 < NaN = 0

Posted

技术标签:

【中文标题】Matlab:0 < NaN = 0【英文标题】:Matlab: 0 < NaN = 0 【发布时间】:2015-11-27 08:39:56 【问题描述】:

我真的被这个错误绊倒了。

这真的是 MATLAB 所期望的还是一个错误?

为什么 0

【问题讨论】:

谢谢大家,我也刚刚在 Java 中测试了这个,其中 0Secure computing cert: Don't compare with NaN 说不要与 NaN 比较!尽管我已经编程了 10 多年,但这感觉就像一个菜鸟错误。 MATLAB 确实将 Java 用于 UI 和其他目的 - 但需要明确的是,MATLAB 中的核心数值算法都是基于 C++ 代码或标准数值库。 【参考方案1】:

根据MathWorks' documentation on NaN,唯一不返回falseNaN 的逻辑运算符是~=(不等于)。

这在逻辑上是有道理的:如果某物“不是数字”,它就不能(不应该)与数字进行比较。 NaN 不等于任何东西。

此外,这是一个 IEEE 标准:NaN 是无序的,因此无法比较。它不适用于任何符合 IEEE 754 的语言。

简而言之,这不是错误。

【讨论】:

为什么说“NaN 上唯一定义良好的逻辑运算符是~=”?该文档指出,涉及NaNs 的逻辑操作始终返回false~= 除外。所以==~=NaN 上都有很好的定义 @LuisMendo 编辑了我糟糕的单词选择。 现在+1。不过,我不会说“因此您不能将任何比较运算符与 NaN 一起使用”。你可以。您只需要了解结果,可以表述为“NaN 不等于任何东西”【参考方案2】:

NaN 具有特殊属性。使用 NaN 执行的数学运算会产生 NaN (x+NaN = NaN)。与 NaN 的比较返回 false。

http://blogs.mathworks.com/seth/2009/02/04/how-do-i-test-for-nan-in-my-model/

【讨论】:

以上是关于Matlab:0 < NaN = 0的主要内容,如果未能解决你的问题,请参考以下文章

matlab中为啥会出现NaN?

matlab中可以用NaN来去掉部分图像,但是怎么使用呢?

MATLAB中出现NAN怎么回事

matlab中计算结果出现“NAN”是啥意思?

MATLAB中出现NAN怎么回事

Matlab出现nan怎么处理