Main Content

Lookup Table Dynamic

動的テーブルを使用した 1 次元関数の近似

  • Lookup Table Dynamic block

ライブラリ:
Simulink / Lookup Tables

説明

他の Lookup Table ブロックとの違い

Lookup Table Dynamic ブロックは、xdat ベクトルおよび ydat ベクトルを使用して関数 y = f(x) に対する近似を計算します。このルックアップ手法は、内挿、外挿、または入力の元の値を使用できます。

Lookup Table Dynamic ブロックを使用すると、シミュレーションを停止せずにテーブル データを変更できます。たとえば、シミュレーション中の物理システムに変更があった場合、新しいテーブル データを組み込むことができます。

ブレークポイントとテーブル データの入力

xdat ベクトルは、ブレークポイント データで、"厳密に単調増加" している必要があります。固定小数点データ型への変換後は、ベクトル内の次の要素の値は、前の要素の値よりも大きくなければなりません。量子化により、xdat は、浮動小数点データ型で厳密に単調増加させることができますが、固定小数点データ型への変換後は、それができません。

ydat ベクトルは、ブレークポイント値での関数の評価あるテーブル データです。

メモ

xdat および ydat にスカラー値 (1 要素配列) は入力できません。どちらか一方にスカラー値を入力した場合、シミュレーション時にエラーが示されます。xdat および ydat の両方に 1 行 n 列のベクトルを入力してください。

Lookup Table の定義

ルックアップ テーブルは、xdat および ydat を 1 行 n 列ベクトルとしてこのブロックに入力することにより、定義します。このブロックの生成コードが使用する ROM を削減するには、xdatydat に異なるデータ型を使用します。

ヒント

ブレークポイントを均等な間隔で配置すると、Simulink® Coder™ で生成されたコードに除算が使用されません。詳細については、Simulink ドキュメンテーションの fixpt_evenspace_cleanup および Simulink Coder ドキュメンテーションの問題のある固定小数点演算を特定 (Embedded Coder)を参照してください。

ブロックでの出力の生成方法

このブロックは、[ルックアップ手法] に選択した方法を使用して、入力値に基づいて出力を生成します。

ルックアップ手法ブロック アクション
内挿 - 外挿

入力の線形内挿と外挿を実行します。

  • 入力がブレークポイントに一致している場合、出力はテーブル データ内で対応する要素になります。

  • 入力と一致するブレークポイントがない場合は、このブロックはテーブルの 2 つの要素間で線形内挿を実行し、出力を決定します。入力がブレークポイント値の範囲外の場合、ブロックは最初の 2 つまたは最後の 2 つのポイントを使用して外挿を実行します。

メモ

このルックアップ手法を選択すると、Simulink Coder ソフトウェアではこのブロックのコードを生成できません。

[内挿 - 最後の値を使用] (既定の設定)

線形内挿を実行しますが、ブレークポイント データの両端のポイントの外では外挿しません。代わりに最後の値を使用します。

入力の最近傍を使用

現在の入力に最も近い xdat 内の要素を見つけます。対応する ydat 内の要素が出力となります。

入力の下の値を使用

現在の入力の下でそれに最も近い xdat 内の要素を見つけます。対応する ydat 内の要素が出力となります。xdat 内の要素で現在の入力の下方にあるものが存在しない場合は、最も近い要素を見つけます。

入力の上の値を使用

現在の入力の上でそれに最も近い xdat 内の要素を見つけます。対応する ydat 内の要素が出力となります。xdat 内の要素で現在の入力の上方にあるものが存在しない場合は、最も近い要素を見つけます。

メモ:

[入力の最近傍を使用]、[入力の下の値を使用]、および [入力の上の値を使用] の方法では、入力 x がブレークポイント値に一致すると、同じアクションが実行されます。

ソルバーの中には、シミュレーション時間をメジャー タイム ステップとマイナー タイム ステップに細かく分けるものがあります。マイナー タイム ステップは、メジャー タイム ステップの下位区分です。ソルバーは、各メジャー タイム ステップでの結果を生成し、マイナー タイム ステップでの結果を使ってメジャー タイム ステップでの結果の精度を向上させます。連続ソルバーでは、不正確な結果が生成されないように信号がマイナー タイム ステップで固定されるため、Lookup Table Dynamic ブロックの出力の外観は階段状になります。ブロック出力に対するソルバーの影響の詳細は、Simulink ドキュメンテーションのソルバーの比較を参照してください。

端子

入力

すべて展開する

このブロックは実数値または複素数値の入力を受け取ります。

例: 2:12

依存関係

x 入力ベクトルと xdat ブレークポイント データは、同じ符号、バイアス、小数部の勾配をもたなければなりません。また、x の精度と範囲は、xdat の精度と範囲以上でなければなりません。

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

xdat ベクトルは、ブレークポイント データで、厳密に単調増加している必要があります。固定小数点データ型への変換後は、ベクトル内の次の要素の値は、前の要素の値よりも大きくなければなりません。量子化により、xdat は、浮動小数点データ型で厳密に単調増加させることができますが、固定小数点データ型への変換後は、それができません。

ヒント

ブレークポイントを均等な間隔で配置すると、Simulink Coder で生成されたコードに除算が使用されません。詳細については、Simulink ドキュメンテーションの fixpt_evenspace_cleanup および Simulink Coder ドキュメンテーションの問題のある固定小数点演算を特定 (Embedded Coder)を参照してください。

例: 1:10

依存関係

xdat ブレークポイント データと x 入力ベクトルは、同じ符号、バイアス、小数部の勾配をもつ必要があります。また、x の精度と範囲は、xdat の精度と範囲以上でなければなりません。

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

ydat 入力は、1 行 n 列の実数値または複素数値のデーブル データのベクトルです。これは、ブレークポイント値での関数の評価です。

例: [0 3 12 27 48 75 108 147 192 243 300]

依存関係

ydat テーブルのデータと y 出力ベクトルは、同じ符号、バイアス、小数部の勾配をもつ必要があります。

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

出力

すべて展開する

ブロックは、入力ベクトル xdat および ydat を使用して、関数 y = f(x) の近似を計算します。このルックアップ手法は、内挿、外挿、または入力の元の値を使用できます。

依存関係

ydat テーブルのデータと y 出力ベクトルは、同じ符号、バイアス、小数部の勾配をもつ必要があります。

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

パラメーター

すべて展開する

[メイン] タブ

ブロックは、ブレークポイント データ (xdat) およびテーブル データ (ydat) の入力ベクトルに、指定した [ルックアップ手法] を適用して出力を計算します。詳細については、ブロックでの出力の生成方法を参照してください。

プログラムでの使用

ブロック パラメーター: LookUpMeth
型: 文字ベクトル
値: 'Interpolation-Extrapolation' | 'Interpolation-Use End Values' | 'Use Input Nearest' | 'Use Input Below' | 'Use Input Above'
既定の設定: 'Interpolation-Use End Values'

[信号属性] タブ

出力信号 y のデータ型を指定します。

データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

依存関係

ydat テーブルのデータと y 出力ベクトルは、同じ符号、バイアス、小数部の勾配をもつ必要があります。

プログラムでの使用

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

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

プログラムでの使用

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

固定小数点演算の丸めモードを指定します。詳細については、丸め (Fixed-Point Designer)を参照してください。

ブロック パラメーターは常に最近傍の表現可能な値に丸められます。ブロックパラメーターの丸めを直接制御するには、MATLAB® の丸め関数を使用する式をマスク フィールドに入力します。

プログラムでの使用

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

このチェック ボックスをオンにすると、オーバーフローを、データ型が表現できる最小値または最大値のいずれかに飽和させます。このオプションを選択しないと、オーバーフローはラップします。

このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

プログラムでの使用

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

ブロックの特性

データ型

Boolean | double | fixed point | integer | single

直達

はい

多次元信号

はい

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

拡張機能

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

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

バージョン履歴

R2006a より前に導入