ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Simulink における固定小数点数

最高精度のための定数のスケーリング

次の固定小数点 Simulink® ブロックは、値が定数ベクトルまたは定数行列であるパラメーターをスケーリングするためのモードを提供します。

このスケーリング モードは、2 進小数点のみのスケーリングに基づいています。このモードを使用すると、共通の 2 進小数点がベクトルまたは行列内の最大値に対する最高精度に基づいて求められるように、定数ベクトルまたは定数行列をスケーリングできます。

最高精度の定数スケーリングは、スケーリングが指定されていない固定小数点データ型に対してのみ使用できます。その他すべての固定小数点データ型は、指定されたスケーリングを使用します。ブロックのダイアログ ボックスで [データ型アシスタント] (データ型アシスタントを利用したデータ型の指定 (Simulink)を参照) を使用すると、最高精度のスケーリング モードを有効にできます。

  1. ブロックのダイアログ ボックスで、[データ型アシスタントを表示] ボタン をクリックします。

    [データ型アシスタント] が表示されます。

  2. [データ型アシスタント][モード] リストで、[固定小数点] を選択します。

    [データ型アシスタント] に、固定小数点データ型に関連付けられている追加のオプションが表示されます。

  3. [スケーリング] リストで、[最高精度] を選択します。

このスケーリング モードをどのように使用するかについて理解するために、次のように定義された double の 3 行 3 列の行列 M を考えてみましょう。

  3.3333e-003  3.3333e-004  3.3333e-005
  3.3333e-002  3.3333e-003  3.3333e-004
  3.3333e-001  3.3333e-002  3.3333e-003

ここで、M を Gain ブロックの [ゲイン] パラメーターの値として指定するとします。独自のスケーリングを指定した結果と定数スケーリング モードを使用した結果についてここで説明します。

  • 指定したスケーリング

    行列要素が 2-7 の 2 進数小数点のみのスケーリングを使用して、10 ビット符号付きの汎用固定小数点データ型に変換されるとします (つまり、2 進小数点は右端のビットの 7 桁左に位置します)。このデータ形式では、M は次のようになります。

    0            0            0
    3.1250e-002  0            0
    3.3594e-001  3.1250e-002  0

    行列要素の多くはゼロであり、ゼロ以外のエントリに対しては、スケーリングされた値が元の値と異なることに注意してください。これは、各要素に対して固定サイズで制限された精度をもつバイナリ ワードに double が変換されるためです。変換データ型が大きく、正確なほど、スケーリングされた値は元の値に近くなります。

  • 最高精度のための定数のスケーリング

    M がその最大行列値に基づいてスケーリングされる場合は、次の結果が得られます。

    2.9297e-003  0            0
    3.3203e-002  2.9297e-003  0
    3.3301e-001  3.3203e-002  2.9297e-003

    最高精度によって、量子化誤差を最小にする小数部の長さが自動的に選択されます。精度が所定の語長に対して最大化されていても、量子化誤差が発生する場合があります。この例では、一部の要素がゼロに量子化されます。

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

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

次のように固定小数点スケーリング式を使用して、固定小数点数を表すことができます。

VV~=SQ+B,

ここで、

  • V は実際値です。

  • V~ は近似実際値です。

  • S=F2E は勾配です。

  • F は勾配調整係数です。

  • E は 2 のべき乗の固定小数点の指数です。

  • Q は整数格納です。

  • B はバイアスです。

詳細は、スケーリングを参照してください。

次の表は、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 は、次の小数部の長さをもつ 32 ビットの符号付き固定小数点データ型です。 31

F

勾配調整係数。

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

C、c、D、または d

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

メモ

この記号を関数 slDataTypeAndScale に渡した場合は、有効な fixdt データ型が返されます。

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

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

T または t

勾配の圧縮エンコード。

メモ

この記号を関数 slDataTypeAndScale に渡した場合は、有効な fixdt データ型が返されます。

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

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