スケーリングされた double
スケーリングされた double とは
スケーリングされた double は浮動小数点数と固定小数点数のハイブリッドです。Fixed-Point Designer™ ソフトウェアでは、スケーリング、符号、語長の情報を保持したまま、これらを double として格納します。たとえば、固定小数点データ型 sfix16_En14
のストレージ コンテナーは int16
です。同等のスケーリングされた double データ型 flts16_En14
のストレージ コンテナーは、浮動小数点 double
です。Fixed-Point Designer ソフトウェアでは、保存された浮動小数点 double にスケーリング情報を適用して実際値を求めます。値を double で格納すると、ほとんどの場合はオーバーフローと精度の問題を回避できます。
スケーリングされた double と double データ型の相違点
スケーリングされた double データ型と double データ型のストレージ コンテナーは、どちらも浮動小数点 double
です。したがって、両方のデータ型オーバーライド設定 Double
および Scaled double
は、浮動小数点 double の範囲と精度の利点をもちます。スケーリングされた double は、指定されたデータ型とスケーリングに関する情報を保持しますが、double はこの情報を保持しません。スケーリングされた double には指定されたスケーリングに関する情報が保持されるため、オーバーフロー検出にも使用できます。
データ型 sfix16_En13
に摂氏 0.75001
度の値を格納する例を考えてみましょう。このデータ型の勾配とバイアスは次のとおりです。
勾配は です。
バイアスは です。
スケーリング式 を使用します。ここで、V は実際値で、Q は格納された整数値です。
.
.
データ型 sfix16_En13
のストレージ コンテナーは 16 ビットなので、格納された整数 Q はこの 16 ビットに収まる整数としてのみ表現できます。したがって、Q の理想値は 6144
に量子化され、桁落ちが発生します。
データ型 sfix16_En13
を Double
でオーバーライドすると、データ型は Double
に変更され、スケーリングに関する情報が失われます。格納された値は実際値 0.75001
に等しくなります。
データ型 sfix16_En13
を Scaled Double
でオーバーライドすると、データ型が flts16_En13
に変更されます。スケーリングは _En13
によって指定されているので、元のデータ型のスケーリングと同じになります。唯一異なる点は、double
となった格納値を保持するためのストレージ コンテナーであるので、格納された値は 6144.08192
となります。この例は、スケーリングされた double を使用した場合の 1 つの利点として、量子化誤差の実質的な排除を示しています。
スケーリングされた double を使用する場合
固定小数点ツールを使用すると、シミュレーションの固定小数点信号に対してさまざまなデータ型オーバーライドを実行できるようになります。スケーリングされた double を使用して、倍精度数を使用している固定小数点データ型やスケーリングをオーバーライドすると、量子化誤差を回避できます。固定小数点データ型をオーバーライドすると、理想的な出力を表す浮動小数点ベンチマークが与えられます。
スケーリングされた double は次のような場合に役立ちます。
テストとデバッグ
オーバーフローの検出
個々のサブシステムへのデータ型オーバーライドの適用
データ型オーバーライドをモデル全体ではなくモデル内のサブシステムに適用した場合は、スケーリングされた double によって、モデルの固定小数点部分が一貫したデータ型を伝播するために必要とする情報が提供されます。