ドキュメンテーション

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

Data Type Conversion

入力信号を指定されたデータ型へ変換

  • ライブラリ:
  • Simulink / Commonly Used Blocks

    Simulink / Signal Attributes

    HDL Coder / Commonly Used Blocks

    HDL Coder / HDL Floating Point Operations

    HDL Coder / Signal Attributes

説明

Data Type Conversion ブロックは、任意の Simulink® データ型の入力信号を、指定されたデータ型に変換します。

メモ:

ブロック パラメーターを指定して出力データ型を制御するまたは下流のブロックからデータ型を継承するには、Data Type Conversion ブロックを使用します。モデルの別の信号からデータ型を継承するには、Data Type Conversion Inherited ブロックを使用します。

固定小数点信号の変換

固定小数点データ型間の変換を行うとき、[等価な値をもつ入力と出力] パラメーターはブロックの動作を制御します。このパラメーターでは、次の場合はブロックの動作は変更されません。

  • 入力および出力に固定小数点データ型がない。

  • 入力または出力に自明のスケーリングをもつ固定小数点データ型がある。

固定小数点数の詳細については、Simulink における固定小数点数 (Fixed-Point Designer)を参照してください。

入力信号の実際値の維持を試行することによってあるデータ型から別のデータ型に信号を変換するには、既定の設定である [実際値 (RWV)] を選択します。ブロックは、入力および出力のスケーリングによる制限を考慮し、等価の実際値の出力を生成しようとします。

格納整数値のスケーリング再解釈を実行することによって入力信号の実際値を変更するには、[整数格納 (SI)] を選択します。指定されたデータ型の範囲内で、ブロックは変換中の信号の格納整数値を維持しようとします。ベスト プラクティスは、同じ語長と符号付き/なしを使用して入力および出力のデータ型を指定することです。これにより、ブロックで信号のスケーリングのみが変更されるようになります。入力と出力に異なる符号または語長を指定すると、範囲の喪失や予期しない符号拡張など予期しない結果になる可能性があります。例については、Simulink モデルにおけるデータ型の変換を参照してください。

[整数格納 (SI)] を選択する場合、ブロックは浮動小数点入力信号の下位ビット再解釈を実行しません。たとえば、入力が single であり、値 5 をもつ場合、入力をメモリに格納するビットは次のコマンドによって 16 進数で与えられます。

num2hex(single(5))
40a00000

ただし、Data Type Conversion ブロックは格納整数値を 40a00000 ではなく実際値の 5 として扱います。変換後の出力の格納整数値は 5 です。

列挙型信号のキャスト

Data Type Conversion ブロックを使用して、次のように列挙型信号をキャストします。

  1. 列挙型の信号を任意の数値型の信号にキャストする。

    Data Type Conversion ブロックに入力されるすべての列挙値入力の基となる整数は、数値型の範囲内でなければなりません。キャストできない場合は、シミュレーション中にエラーが発生します。

  2. 整数型の信号を列挙型の信号にキャストする。

    Data Type Conversion ブロックに入力される値は、列挙値の元となる値に一致させなければなりません。キャストできない場合は、シミュレーション中にエラーが発生します。

    ブロックへの入力値が列挙値の元となる値に一致しない場合は、[整数オーバーフローで飽和] パラメーターを有効にして Simulink が列挙型の既定値を使えるようにできます。列挙値の型キャスト (Simulink Coder)を参照してください。

Data Type Conversion ブロックは次の場合は使用できません。

  • 非整数の数値信号を列挙型信号にキャストする。

  • 複素信号を列挙型信号にキャストする (実数部および虚数部のデータ型は任意)。

列挙型の操作の詳細は、Simulink 列挙型を参照してください。

端子

入力

すべて展開する

入力信号。スカラー、ベクトル、行列または N 次元配列として指定します。入力は実数信号または複素数信号を受け入れます。入力が実数の場合は出力も実数になり、入力が複素数の場合は出力も複素数です。このブロックでは、入力信号が [出力データ型] で指定したデータ型に変換されます。

固定小数点データ型を変換するときは、[等価な値をもつ入力と出力] パラメーターを使用して、信号の [実際値 (RWV)] または [整数格納 (SI)] のどちらの値に基づいて変換を行うかを指定します。詳細については、固定小数点信号の変換を参照してください。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated

出力

すべて展開する

指定したデータ型に変換された出力信号。次元は入力信号と同じになります。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated

パラメーター

すべて展開する

Simulink がチェックする出力範囲の下限値。

Simulink は、最小値を使って以下を行います。

メモ

[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: OutMin
: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

Simulink がチェックする出力範囲の上限値。

Simulink は、最大値を使って以下を行います。

メモ

[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: OutMax
: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

出力のデータ型を選択します。型は継承されるか、直接指定されるか、Simulink.NumericType などのデータ型オブジェクトとして表現されます。

プログラムでの使用

ブロック パラメーター: OutDataTypeStr
型: 文字ベクトル
値: 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'Enum: <class name>''<data type expression>'
既定の設定: 'Inherit: Inherit via back propagation'

固定小数点ツールが、ブロックに指定した [出力] データ型をオーバーライドしないようにするには、このパラメーターを選択します。詳細については、[出力データ型の設定をロックする] の使用 (Fixed-Point Designer)を参照してください。

プログラムでの使用

ブロック パラメーター: LockScale
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

固定小数点データ表現のコンテキストにおいて等価でなければならない入出力型を指定します。

  • 実際値 (RWV) — 入力の [実際値 (RWV)] を出力の [実際値 (RWV)] と等価にすることを指定します。

  • 整数格納 (SI) — 入力の [整数格納 (SI)] の値を出力の [整数格納 (SI)] の値と等価にすることを指定します。

プログラムでの使用

ブロック パラメーター: ConvertRealWorld
型: 文字ベクトル
値: 'Real World Value (RWV)' | 'Stored Integer (SI)'
既定の設定: 'Real World Value (RWV)'

次のいずれかの丸めモードを選択します。

正方向

正の無限大方向に正負の値を丸めます。MATLAB® 関数 ceil と等価です。

最も近い偶数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、最も近い偶数の整数に丸めます。Fixed-Point Designer™ 関数 convergent と等価です。

負方向

負の無限大方向に正負の値を丸めます。MATLAB 関数 floor と等価です。

最も近い正の整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の無限大方向に丸めます。Fixed-Point Designer 関数 nearest と等価です。

最も近い整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の数値を正の無限大方向、負の数値を負の無限大方向に丸めます。Fixed-Point Designer 関数 round と等価です。

最も簡潔

下限値への丸めとゼロへの丸めのいずれかを自動的に選択し、できるだけ効率の高い丸めコードを生成します。

ゼロ方向

ゼロ方向に数値を丸めます。MATLAB 関数 fix と等価です。

プログラムでの使用

ブロック パラメーター: RndMeth
: 文字ベクトル
: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
既定の設定: 'Floor'

参考

詳細については、丸め (Fixed-Point Designer)を参照してください。

オーバーフローで飽和するかラップするかを指定します。

  • off — オーバーフローは、データ型によって表現される適切な値にラップされます。

    たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。

  • on — オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。

    たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。

ヒント

  • モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このチェック ボックスをオンにすることを検討してください。

  • 生成コードの効率を最適化する場合には、このチェック ボックスをオフにすることを検討してください。

    このチェック ボックスをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細については、信号範囲のエラーのチェックを参照してください。

  • このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。

  • 通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

プログラムでの使用

ブロック パラメーター: SaturateOnIntegerOverflow
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

サンプル時間を -1 以外の値で指定します。詳細については、サンプル時間の指定を参照してください。

依存関係

このパラメーターは、明示的に -1 以外の値に設定されていない限り表示されません。詳細は、サンプル時間が推奨されないブロックを参照してください。

プログラムでの使用

ブロック パラメーター: SampleTime
型: 文字ベクトル
値: スカラー
既定の設定: '-1'

ブロックの特性

データ型

Boolean | double | enumerated | fixed point | integer | single

直接フィードスルー

はい

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

R2006a より前に導入