在matlab中NaN的确切值是多少?

时间:2012-12-11 03:29:52

标签: matlab double nan

需要在matlab和一些DLL函数之间来回传递一些数据,有一点可以看出我们在matlab中不知道NaN的精确数值,所以会有一些不必要的数据处理将这些值带入帐户。

有人知道matlab中NaN的确切值或至少值的范围吗?

我最感兴趣的是了解以下两种主要类型:

(1)NaN for float(32);

(2)NaN为double(64)。

2 个答案:

答案 0 :(得分:6)

根据Mathwork's documentationNaN返回非算术的IEEE算术表示。 NaN始终处于浮点表示(float或double) - 我不相信存在整数NaN。

在IEEE 754中,NaN表示为浮点数,所有指数位设置为1,小数部分设置为任何非零值(因此实际上有很多方法表示一般NaN)。请参阅“特殊值”here

手动测试NaN的最可靠方法不是寻找特定值,而是测试所有指数位都已设置且小数部分为非零。

答案 1 :(得分:4)

您可以使用NaN检查特定format hex MATLAB使用的位模式。

>> format hex
>> NaN
ans =
   fff8000000000000
>> single(NaN)
ans =
   ffc00000

如果您真的想,可以使用typecast构建其他NaN,如下所示:

>> format long
>> otherNan = typecast( 1 + typecast( single(NaN), 'int32' ), 'single' )
otherNan =
   NaN
>> isnan(otherNan)
ans =
     1
>> format hex
>> otherNan
otherNan =
   ffc00001