MATLAB および Simulink の固定小数点データ
Simulink の固定小数点データ
Simulink® で関数 fixdt
を使用すると、固定小数点データ型を指定できます。関数 fixdt
により Simulink.NumericType
オブジェクトが作成されます。
固定小数点データ型とスケーリングの表記法
Simulink データ型名は、128 文字未満の有効な MATLAB® 識別子でなければなりません。データ型名は、コンテナーのタイプ、数のエンコード、およびスケーリングに関する情報を与えます。
次の表は、Simulink 製品に表示されるさまざまな記号のキーをまとめています。これらはデータ型や固定小数点値のスケーリングを示します。
記号 | 説明 | 例 |
---|---|---|
コンテナーのタイプ | ||
| 符号なしの固定小数点データ型。 |
|
| 符号付き固定小数点データ型。 |
|
| スケーリングされた double は、符号なしの固定小数点データ型 ( |
|
| スケーリングされた double は、符号付きの固定小数点データ型 ( |
|
数のエンコード | ||
| 10^ |
|
| 負数 |
|
| 小数点 |
|
スケーリングのエンコード | ||
| 勾配 |
|
| バイアス |
|
| 固定小数点の指数 (2^)。 負の固定小数点の指数は、小数部の長さを記述します。 |
|
| 勾配調整係数。 |
|
C、c、D、または d | バイアスの圧縮エンコード。 メモ この文字ベクトルを関数 | 例はありません。これは下位互換性のためにのみ存在します。 関数 |
T または t | 勾配の圧縮エンコード。 メモ この文字ベクトルを関数 | 例はありません。これは下位互換性のためにのみ存在します。 関数 |
MATLAB の固定小数点データ
MATLAB で固定小数点データ型を数値または変数に割り当てるには、fi
(Fixed-Point Designer) コンストラクターを使用します。結果として得られる固定小数点値は fi
オブジェクトと呼ばれます。たとえば以下では、fi
オブジェクト a および b が作成され、表示される属性はすべて、その変数の作成時に指定できます。FractionLength
プロパティを指定しない場合、その値の最上位ビットを保持しながら、保持所定の語長で "最高精度" が得られるように自動的に設定されます。WordLength
プロパティを指定しない場合、既定値の 16 ビットに設定されます。
a = fi(pi)
a = 3.1416015625 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
b = fi(0.1)
b = 0.0999984741210938 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 18
ワークスペースからの固定小数点データの読み取り
MATLAB ワークスペースから Simulink モデルに固定小数点データを読み取るには、From Workspace ブロックを使用します。このためには、データは values
フィールドに fi
オブジェクトをもつ構造体形式でなければなりません。配列形式では、From Workspace ブロックは実数の倍精度データしか受け入れることができません。
ワークスペースへの固定小数点データの書き込み
モデルから To Workspace ブロック経由で MATLAB ワークスペースへ固定小数点出力を、配列形式、構造体形式のいずれかで書き込むことができます。To Workspace ブロックによりワークスペースに構造体形式で書き込まれた固定小数点データは、From Workspace ブロックにより構造体形式で Simulink モデルに読み戻すことができます。
スケーリングされた double
スケーリングされた double は浮動小数点数と固定小数点数のハイブリッドです。Fixed-Point Designer™ は、スケーリング、符号および語長の情報を維持したまま double として保存します。たとえば、固定小数点データ型 sfix16_En14
のストレージ コンテナーは int16
です。同等のスケーリングされた double データ型 flts16_En14
のストレージ コンテナーは浮動小数点 double
です。Fixed-Point Designer は保存された浮動小数点 double にスケーリング情報を適用して実際値を求めます。値を double で格納すると、ほとんどの場合はオーバーフローと精度の問題を回避できます。
参考
関数
fi
(Fixed-Point Designer) |fimath
(Fixed-Point Designer) |fixdt
|Simulink.NumericType