4

matlab といくつかの DLL 関数の間でデータをやり取りする必要があります。1 つ目立っているのは、matlab では NaN の正確な数値がわからないため、これらの値を考慮するために不要なデータ処理が行われることです。

matlab の NaN の正確な値または少なくとも値の範囲を知っている人はいますか?

次の 2 つのプリミティブ型を知ることに最も興味があります。

(1) float (32) の場合は NaN。

(2) double の NaN (64)。

4

2 に答える 2

6

MathworkのドキュメントによるとNaN、Not-a-NumberのIEEE算術表現を返します。NaNは常に浮動小数点表現(floatまたはdouble)です-整数のNaNがあるとは思いません。

IEEE 754では、NaNはすべての指数ビットが1に設定され、小数部がゼロ以外の値である浮動小数点数として表されます(したがって、一般的なNaNを表す方法は実際には多くあります)。こちらの「特別な価値」をご覧ください

手作業でNaNをテストする最も信頼できる方法は、特定の値を探すのではなく、すべての指数ビットが設定され、小数部がゼロ以外であることをテストすることです。

于 2012-12-11T04:19:32.073 に答える
4

NaNを使用して、特定のMATLAB 使用のビット パターンを調べることができますformat hex

>> 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
于 2012-12-11T07:57:16.537 に答える