无穷和 NaN
无穷
MATLAB® 用特殊值 Inf
表示无穷。除以零和溢出等运算会生成无穷值,从而导致结果因太大而无法表示为传统的浮点值。MATLAB 还提供了一个称为 Inf
的函数,该函数以 double
标量值形式返回正无穷的 IEEE® 算术表示。
下面显示了在 MATLAB 中返回正无穷或负无穷值的多个语句示例。
|
|
|
|
使用 isinf
函数验证 x
是否为正无穷或负无穷值:
x = log(0); isinf(x) ans = 1
NaN
MATLAB 使用一个称为 NaN
(代表“非数字”)的特殊值来表示不是实数或复数的值。0/0
和 inf/inf
之类的表达式会生成 NaN
,就像执行涉及 NaN
的任何算术运算一样:
x = 0/0 x = NaN
您也可以通过以下方式创建 NaN
:
x = NaN; whos x Name Size Bytes Class x 1x1 8 double
NaN
函数将 NaN
的一个 IEEE 算术表示形式作为 double
标量值返回。此 NaN
值的按位十六进制精确表示形式为:
format hex x = NaN x = fff8000000000000
始终使用 isnan
函数来校验数组中的元素是否为 NaN
:
isnan(x) ans = 1
MATLAB 保留其他 NaN
表示形式的“非数字”状态,并同等对待 NaN
的所有不同表示形式。但是,在某些特殊情形中(可能由于硬件限制),MATLAB 在整个计算过程中不保留其他 NaN
表示形式的精确位模式,而是使用上文定义的标准 NaN
位模式。
对 NaN 执行逻辑运算
由于两个 NaN
彼此不相等,因此与 NaN
相关的逻辑运算始终返回 false,但测试是否不相等 (NaN ~= NaN
) 除外:
NaN > NaN ans = 0 NaN ~= NaN ans = 1