Main Content

MATLAB および Simulink の固定小数点データ

Simulink の固定小数点データ

Simulink® で関数 fixdt を使用すると、固定小数点データ型を指定できます。関数 fixdt により Simulink.NumericType オブジェクトが作成されます。

固定小数点データ型とスケーリングの表記法

Simulink データ型名は、128 文字未満の有効な MATLAB® 識別子でなければなりません。データ型名は、コンテナーのタイプ、数のエンコード、およびスケーリングに関する情報を与えます。

次の表は、Simulink 製品に表示されるさまざまな記号のキーをまとめています。これらはデータ型や固定小数点値のスケーリングを示します。

記号

説明

コンテナーのタイプ

ufix

符号なしの固定小数点データ型。

ufix8 は 8 ビットの符号なし固定小数点データ型です。

sfix

符号付き固定小数点データ型。

sfix128 は 128 ビットの符号付き固定小数点データ型です。

fltu

スケーリングされた double は、符号なしの固定小数点データ型 (ufix) をオーバーライドします。

fltu32 は、次のスケーリングされた double のオーバーライドです。 ufix32

flts

スケーリングされた double は、符号付きの固定小数点データ型 (sfix) をオーバーライドします。

flts64 は、次のスケーリングされた double のオーバーライドです。 sfix64

数のエンコード

e

10^

125e8 は以下と等価です。 125*(10^(8))

n

負数

n31 は以下と等価です。 -31

p

小数点

1p5 は以下と等価です。1.5

p2 は以下と等価です。 0.2

スケーリングのエンコード

S

勾配

ufix16_S5_B7 は、5Slope7Bias をもつ 16 ビットの符号なし固定小数点データ型です。

B

バイアス

ufix16_S5_B7 は、5Slope7Bias をもつ 16 ビットの符号なし固定小数点データ型です。

E

固定小数点の指数 (2^)。

負の固定小数点の指数は、小数部の長さを記述します。

sfix32_En31 は、31 の小数部の長さをもつ 32 ビットの符号付き固定小数点データ型です。

F

勾配調整係数。

ufix16_F1p5_En50 は、1.5SlopeAdjustmentFactor-50FixedExponent をもつ 16 ビットの符号なし固定小数点データ型です。

C、c、D、または d

バイアスの圧縮エンコード。

メモ

この文字ベクトルを関数 slDataTypeAndScale に渡した場合は、有効な fixdt データ型が返されます。

例はありません。これは下位互換性のためにのみ存在します。

関数 slDataTypeAndScale への呼び出しを識別して置き換えるには、Check for calls to slDataTypeAndScaleモデル アドバイザーのチェックを使用します。

T または t

勾配の圧縮エンコード。

メモ

この文字ベクトルを関数 slDataTypeAndScale に渡した場合は、有効な fixdt データ型が返されます。

例はありません。これは下位互換性のためにのみ存在します。

関数 slDataTypeAndScale への呼び出しを識別して置き換えるには、Check for calls to slDataTypeAndScaleモデル アドバイザーのチェックを使用します。

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 で格納すると、ほとんどの場合はオーバーフローと精度の問題を回避できます。

参考

関数