このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
1 次元関数を近似
Simulink / Lookup Tables
HDL Coder / Lookup Tables
1-D、2-D および n-D の Lookup Table ブロックは、N 個の変数で関数のサンプル値表現を評価します。
関数 F は経験的なものです。このブロックは、ブロックのパラメーターで定義した値のテーブルの検索または内挿により、入力を出力値にマップします。このブロックは、フラット (定数)、線形 (線形の点と勾配)、ラグランジュ (線形ラグランジュ)、最も近い整数への丸め、3 次スプライン、および Akima スプライン内挿法をサポートしています。これらの方法は、1 ~ 30 の任意の次元のテーブルに適用できます。
次のブロックでは、最初の入力は最初の次元 (行) ブレークポイントのブレークポイントを、2 番目の入力は 2 番目の次元 (列) のブレークポイントをというように、識別します。
ブロックの向きに関する端子の順番の詳細は、回転または反転後の端子の位置を参照してください。
[数学とデータ型] 、 [行優先の配列レイアウトに最適化されたアルゴリズムを使用] コンフィギュレーション パラメーターが設定された場合、2 次元および n 次元の Lookup Table ブロックの動作が列優先から行優先に変化します。これらのブロックでは、列優先のアルゴリズムと行優先のアルゴリズムは出力計算の順序が異なる場合があり、結果的に数値がわずかに異なる可能性があります。この機能には Simulink® Coder™ または Embedded Coder® のライセンスが必要です。行優先のサポートの詳細については、Code Generation of Matrices and Arrays (Simulink Coder)を参照してください。
これらのブロック パラメーターはブレークポイントとテーブル データを定義します。
ブロック パラメーター | 目的 |
---|---|
テーブルの次元数 | ルックアップ テーブルの次元数を指定します。 |
ブレークポイント | ルックアップ テーブルの各次元に対応するブレークポイント ベクトルを指定します。 |
テーブル データ | 関連する出力値のセットを定義します。 |
ヒント
ブレークポイントを均等な間隔で配置すると、生成コードは分割されません。詳細については、fixpt_evenspace_cleanup
および問題のある固定小数点演算の特定 (Embedded Coder)を参照してください。
n-D、1-D および 2-D の Lookup Table ブロックはその入力値に基づき、テーブル値をルックアップまたは推定することにより、ブロックの出力を生成します。
ブロック入力 | n-D Lookup Table ブロックの動作 |
---|---|
ブレークポイント データセットのインデックスの値と一致する | 行と列、および高次元のブレークポイントの交差部の表の値を出力します。 |
ブレークポイント データセットのインデックスの値とは一致しないが、範囲内 | 選択した [内挿法] を使用して適切な表の値を内挿します。 |
ブレークポイント データセットのインデックスの値とは一致せず、範囲外 | 選択した [外挿法] を使用して出力値を外挿します。 |
Interpolation Using Prelookup ブロックを Prelookup ブロックと共に使用して、1 つの n-D Lookup Table ブロックと同等の演算を実行できます。ブロックをこのように組み合わせると、フレキシビリティが大きくなるので、線形内挿のためのシミュレーションのパフォーマンスがより効果的になります。
ルックアップ演算が、内挿を必要としない配列アクセスの場合は、Direct Lookup Table (n-D) ブロックを使用します。たとえば、整数値 k
があり、テーブルの k
番目の要素 y = table(k)
が必要な場合は、内挿は必要ありません。
u1
— 最初の次元 (行) の入力u1 端子への実数値入力。定義される値のテーブルのルックアップまたは内挿により出力値にマッピングされます。
例: 0:10
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| enumerated
| fixed point
T
— 出力値のテーブルを定義実行時に調整可能な信号を使用して、出力値のテーブルを指定します。
シミュレーションの実行中、行列のサイズは テーブルの次元数 パラメーターで定義されたサイズに一致していなければなりません。ただし、ブロック線図の編集時には、空行列 ([]
として指定) または未定義のワークスペース変数を入力できます。この手法により、テーブル データに対する適切な次元の行列の指定は後回しにして、ブロック線図の編集を続けることができます。
この端子を有効にするには、次のように設定します。
[データの仕様] を [テーブルとブレークポイント]
。
[テーブル データ] を [入力端子]
。
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
bp1
— 明示的なブレークポイントの値実行時に調整可能な信号を使用して、[ブレークポイントの指定] パラメーターの値に基づいて、ブレークポイント データを明示的に指定します。
[ブレークポイントの指定] を [明示的な値]
に設定した場合は、各 [ブレークポイント] 行でテーブル データの各次元に対応するブレークポイントの設定を入力します。各次元に対して、厳密に単調増加する値をもつ 1 行 n 列または n 行 1 列のベクトルとしてブレークポイントを指定します。
メモ
ブレークポイントを等間隔指定形式で指定するには、[ブレークポイントの指定] を [等間隔]
に設定し、[ブレークポイント] の [最初の点] と [間隔] パラメーターを使用します。
この端子を有効にするには、次のように設定します。
[データの仕様] を [テーブルとブレークポイント]
。
[ブレークポイントの指定] を [明示的な値]
。
[ブレークポイント 1] を [入力端子]
。
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| enumerated
| fixed point
Port_1
— テーブル値をルックアップまたは推定して計算される出力入力値に基づいて、テーブル値をルックアップまたは推定することにより、生成された出力。
ブロックの入力 | n-D Lookup Table ブロック |
---|---|
ブレークポイント データセットのインデックスの値と一致する | 行と列、および高次元のブレークポイントの交差部の表の値を出力します。 |
ブレークポイント データセットのインデックスの値とは一致しないが、範囲内 | 選択した [内挿法] を使用して適切な表の値を内挿します。 |
ブレークポイント データセットのインデックスの値とは一致せず、範囲外 | 選択した [外挿法] を使用して出力値を外挿します。 |
データ型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
テーブルの次元数
— ルックアップ テーブルの次元数1
(既定値) | 2
| 3
| 4
| ...
| 30
ルックアップ テーブルの次元数を入力します。このパラメーターにより以下が決定されます。
テーブルの独立変数の数、およびブロック入力数
指定するブレークポイント セット数
指定する内容 | 方法 |
---|---|
1、2、3、または 4 |
ドロップダウン リストから値を選択します。 |
大きいテーブルの次元 |
フィールドに正の整数を直接入力します。 このブロックがサポートするテーブルの最大の次元数は 30 です。 |
たとえば、サイズが M x N x ... のテーブルとは、次元 1 のサイズが M、次元 2 のサイズが N、という意味です。M は最初のブレークポイントの長さと一致していなければならず、N は 2 番目のブレークポイントの長さと一致していなければならないというようになります。
ブロック パラメーター: NumberOfTableDimensions |
型: 文字ベクトル |
値: '1' | '2' | '3' | '4' | ... | 30 |
既定の設定: '1' |
データ仕様
— テーブルとブレークポイントの指定の方法テーブルとブレークポイント
(既定値) | ルックアップ テーブル オブジェクト
リストから以下を選択します。
テーブルとブレークポイント
— テーブル データとブレークポイントを指定します。これらのオプションを選択すると、次のパラメーターが有効になります。
テーブル データ
ブレークポイントの指定
ブレークポイント 1
テーブルとブレークポイントの編集
入力端子を使用してテーブルとブレークポイントを指定するには、[ソース] パラメーターを参照してください。
ルックアップ テーブル オブジェクト
— 既存のルックアップ テーブル (Simulink.LookupTable
) オブジェクトを使用します。このオプションを選択すると、[名前] フィールドおよび [テーブルとブレークポイントの編集] ボタンが有効になります。
ブロック パラメーター: DataSpecification |
型: 文字ベクトル |
値: 'Table and breakpoints' | 'Lookup table
object' |
既定の設定: 'Table and breakpoints' |
名前
— ルックアップ テーブル オブジェクトの名前[]
(既定値) | Simulink.LookupTable
オブジェクトルックアップ テーブル (Simulink.LookupTable
) オブジェクトの名前を入力します。Simulink.LookupTable
オブジェクトがない場合は、アクション ボタン をクリックして [作成] を選択します。新しいルックアップ テーブル オブジェクトの対応するパラメーターにブロック情報が自動的に入力されます。
このパラメーターを有効にするには、[データの仕様] を [ルックアップ テーブル オブジェクト]
に設定します。
ブロック パラメーター: LookupTableObject |
型: 文字ベクトル |
値: Simulink.LookupTable オブジェクトの名前 |
既定の設定: '' |
ブレークポイントの指定
— ブレークポイントの指定の方法明示的な値
(既定値) | 等間隔
明示的なブレークポイントまたは等間隔のブレークポイントを生成するパラメーターのどちらでデータを入力するか指定します。
ブレークポイント データを明示的に指定するには、このパラメーターを [明示的な値]
に設定し、[ブレークポイント] パラメーターの横にあるテキスト ボックスにブレークポイント データを入力します。
等間隔のブレークポイントを生成するパラメーターを指定するには、このパラメーターを [等間隔]
に設定し、ブレークポイント データの次元ごとに [最初の点] パラメーターと [間隔] パラメーターに値を入力します。ブロックは、テーブル データから生成される点の数を計算します。
このパラメーターを有効にするには、[データの仕様] を [テーブルとブレークポイント]
に設定します。
ブロック パラメーター: BreakpointsSpecification |
型: 文字ベクトル |
値: 'Explicit values' | 'Even spacing' |
既定の設定: 'Explicit values' |
ソース
— テーブルとブレークポイント データのソースダイアログ
(既定値) | [入力端子]
テーブルとブレークポイント データのソース。次のように指定します。
ダイアログ
— テーブルまたはブレークポイント データを [値] パラメーターに指定します。
入力端子
— テーブルまたはブレークポイント データを関連付けられている入力端子を通じて指定します。
最大 3 つのブレークポイントのデータ入力端子を作成できます。ブレークポイント 4 から 30 までについては、対応する [ブレークポイント] パラメーターを介してのみブレークポイント データを指定できます。
メモ
テーブルまたはブレークポイント データを指定するために入力端子を使用すると、実行時チェックによりブロックのシミュレーションのパフォーマンスに悪影響を及ぼす可能性があります。
このパラメーターを有効にするには、[データの仕様] を [テーブルとブレークポイント]
に設定します。
関連付けられている [値] を有効にするには、このパラメーターを [ダイアログ]
に設定します。
関連付けられている入力端子を有効にするには、このパラメーターを [入力端子]
に設定します。
このパラメーターを [入力端子]
に設定すると、[値] フィールドは無効になり、[データ型] タブの対応するパラメーターは非表示になります。
パラメーターのいずれかについてこのパラメーターを [入力端子]
に設定すると、[テーブルとブレークポイントの編集] ボタンが無効になります。
ブロック パラメーター: TableSource | BreakpointsForDimension1Source | BreakpointsForDimension2Source | BreakpointsForDimension3Source
|
型: 文字ベクトル |
値: Dialog | Input
port |
既定の設定: 'Dialog' |
テーブル データ
— 出力値のテーブルを定義tanh([-5:5])
(既定値) | 値のベクトル 関連付けられている [値] フィールドの出力値のテーブルを入力します。
シミュレーションの実行中、行列のサイズは テーブルの次元数 パラメーターで定義されたサイズに一致していなければなりません。ただし、ブロック線図の編集時には、空行列 ([]
として指定) または未定義のワークスペース変数を入力できます。この手法により、テーブル データに対する適切な次元の行列の指定は後回しにして、ブロック線図の編集を続けることができます。
このパラメーターを有効にするには、次のように設定します。
[データの仕様] を [テーブルとブレークポイント]
。
[テーブル データ: ソース] を [ダイアログ]
。
ブロック パラメーター: Table |
型: 文字ベクトル |
値: テーブルの値のベクトル |
既定の設定: 'tanh([-5:5])' |
ブレークポイント
— 明示的なブレークポイントの値、またはブレークポイントの最初の点と間隔[-5:5]
(既定値) | 単調増加する値の 1 行 n 列、または n 行 1 列のベクトル[ブレークポイントの指定] パラメーターの値に基づいて、ブレークポイント データを明示的にまたは等間隔のブレークポイントとして指定します。
[ブレークポイントの指定] を [明示的な値]
に設定した場合は、各 [ブレークポイント] 行でテーブル データの各次元に対応するブレークポイントの設定を入力します。各次元に対して、厳密に単調増加する値をもつ 1 行 n 列または n 行 1 列のベクトルとしてブレークポイントを指定します。
[ブレークポイントの指定] を [等間隔]
に設定した場合は、各 [ブレークポイント] 行で [最初の点] および [間隔] パラメーターを入力し、それぞれの次元で等間隔のブレークポイントを生成します。テーブル データによって、等間隔の点の数が決まります。
このパラメーターを有効にするには、次のように設定します。
[データの仕様] を [テーブルとブレークポイント]
。
[テーブル データ: ソース] を [ダイアログ]
。
[ブレークポイントの指定] パラメーターが [等間隔]
に設定されている場合、このダイアログを通じてブレークポイント データのみ指定できます。
ブロック パラメーター: BreakpointsForDimension1 |
型: 文字ベクトル |
値: 単調増加する値の 1 行 n 列、または n 行 1 列のベクトル |
既定の設定: '[10, 22, 31]' |
最初の点
— 等間隔のブレークポイント データの最初の点1
(既定値) | スカラー等間隔のブレークポイント データの最初の点を、実数値で有限のスカラーとして指定します。このパラメーターは、[ブレークポイントの指定] が [等間隔]
に設定されている場合に使用できます。
このパラメーターを有効にするには、[データの仕様] を [テーブルとブレークポイント]
に、および [ブレークポイントの指定] を [等間隔]
に設定します。
ブロック パラメーター: BreakpointsForDimension1FirstPoint |
型: 文字ベクトル |
値: 実数値、有限、スカラー |
既定の設定: '1' |
間隔
— 等間隔のブレークポイント間の間隔1
(既定値) | スカラー等間隔のブレークポイント データに点の間隔を指定します。
このパラメーターを有効にするには、[データの仕様] を [テーブルとブレークポイント]
に、および [ブレークポイントの指定] を [等間隔]
に設定します。
ブロック パラメーター: BreakpointsForDimension1Spacing |
型: 文字ベクトル |
値: 正、実数値、有限、スカラー |
既定の設定: '1' |
テーブルとブレークポイントの編集
— [ルックアップ テーブル エディター] ダイアログ ボックスを起動ルックアップ テーブル エディターを開くには、このボタンをクリックします。詳細については、Simulink ドキュメンテーションのルックアップ テーブルの編集を参照してください。
ルックアップ テーブル オブジェクトのこのボタンをクリックすると、オブジェクトを編集してオブジェクトの新しい値を保存できます。
内挿法
— ブレークポイント値間の内挿の方法線形の点と勾配
(既定値) | フラット
| 最も近い正の整数方向
| 線形ラグランジュ
| 3 次スプライン
| Akima スプライン
入力がブレークポイント値の間に来た場合、ブロックは隣接するブレークポイントを使って出力値を内挿します。内挿法の詳細については、内挿法を参照してください。
[3 次スプライン]
を選択すると、ブロックはスカラー信号のみをサポートします。他の内挿法は、非スカラー信号をサポートします。
[Akima スプライン]
を選択すると、外挿法には [Akima スプライン]
だけを指定できます。
修正 Akima 内挿法に設定すると、このブロックでは以下はサポートされません。
行優先の配列レイアウト、および行優先の配列レイアウトに最適化されたアルゴリズム
スケーリングされた double および固定小数点データ型
Simulink.LookupTable
オブジェクト
コンフィギュレーション パラメーター [コード生成] 、 [インターフェイス] 、 [非有限数のサポート] チェック ボックスがオンになっている場合のコード生成
ブロック パラメーター: InterpMethod |
型: 文字ベクトル |
値: 'Linear point-slope' | 'Flat' | 'Nearest' | 'Linear Lagrange' |
'Cubic spline' | 'Akima spline' |
既定の設定: 'Linear point-slope' |
外挿法
— ブレークポイント データセットの範囲外にある入力値の処理方法線形
(既定値) | クリップ
| 3 次スプライン
| Akima スプライン
[クリップ]
、[線形]
、または [3 次スプライン]
を選択します。詳細については、外挿法を参照してください。
外挿法が [線形]
の場合、外挿値は選択された線形内挿法に基づいて計算されます。たとえば、内挿法が線形ラグランジュの場合、外挿法は線形ラグランジュ方程式を継承して外挿された値を計算します。
[外挿法] に [3 次スプライン]
を選択するには、[内挿法] にも [3 次スプライン]
を選択する必要があります。
[外挿法] に [Akima スプライン]
を選択するには、[内挿法] にも [Akima スプライン]
を選択する必要があります。
ブロック パラメーター: ExtrapMethod |
型: 文字ベクトル |
値: 'Linear' | 'Clip' | 'Cubic spline' | 'Akima
spline' |
既定の設定: 'Linear' |
インデックス検索法
— テーブル インデックスの計算方法等間隔のポイント
(既定値) | 線形探索
| 二分探索
[Evenly spaced points
]、[Linear search
]、または [Binary search
] を選択します。各検索法は、さまざまな環境で速度の利点をもっています。
ブレークポイント セットが均等の間隔に並んでいる場合 (例: 10, 20, 30 など)、[Evenly spaced points
] を選択してテーブル インデックスを計算することにより、速度を最大に上げることができます。
このアルゴリズムは最初の 2つのブレークポイントのみを利用して残りのポイントのオフセットと間隔を求めます。
メモ
Simulink.LookupTable
オブジェクトを使用してテーブルデータを指定するときは、[インデックス検索法] を [等間隔のポイント]
に設定すると、参照先の Simulink.LookupTable
オブジェクトの [ブレークポイントの指定] パラメーターが [等間隔]
に設定されます。
不規則な間隔に並んでいるブレークポイント セットについては、以下のガイドラインに従ってください。
あるタイム ステップから次のタイム ステップまでに入力信号があまり変化しない場合は、[前回のインデックス結果を使ってインデックス検索を始める] と組み合わせて [線形探索
] を選択すると、最高のパフォーマンスが得られます。
入力信号がタイム ステップあたり 2 個以上または 3 個以上のテーブル区間をジャンプする場合は、[二分探索
] を選択すると、最高のパフォーマンスが得られます。
インデックス検索法に関する準最適な選択は、ルックアップ テーブルに大きく依存しているモデル内でパフォーマンスの低下をもたらします。
メモ
生成コードは、以下の場合、最初のブレークポイント、間隔、およびブレークポイントの数だけを保存します。
ブレークポイント データが調整不可能な場合。
インデックス検索法が [Evenly spaced points
] の場合。
ブロック パラメーター: IndexSearchMethod |
型: 文字ベクトル |
値: 'Binary search' | 'Evenly spaced points' | 'Linear search' |
既定の設定: 'Binary search' |
前回のインデックス結果を使ってインデックス検索を始める
— 前のタイム ステップからインデックスの使用を開始off
(既定値) | on
このチェック ボックスは、前のタイム ステップで発見されたインデックスを使ってこのブロックにそのブロックの探索を開始させたいときに選択します。区間サイズに関してゆっくりと変化する入力に対して、このオプションをオンにするとパフォーマンスを改善できます。そうでない場合、線形探索法と二分探索法は非常に長い時間を要します。特に、ブレークポイントセットが大きな場合には長い時間を要します。
このパラメーターを有効にするには、[インデックス検索法] を [線形探索]
または [二分探索]
に設定します。
ブロック パラメーター: BeginIndexSearchUsing PreviousIndexResult |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
範囲外入力の診断
— 入力が範囲外の場合のブロックのアクションなし
(既定値) | 警告
| エラー
入力が範囲外の場合に警告を表示するかエラーを表示するかを指定します。オプションは次のとおりです。
なし
— 応答しません。
警告
— 警告が表示され、シミュレーションは続行されます。
エラー
— シミュレーションを終了し、エラーを表示します。
ブロック パラメーター: DiagnosticForOutOfRangeInput |
型: 文字ベクトル |
値: 'None' | 'Warning' | 'Error' |
既定の設定: 'None' |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
— 最後のブレークポイントまたはそれを超える入力に対して出力を計算する方法off
(既定値) | on
このチェック ボックスを使用してブレークポイント セットの最後の要素とその対応するテーブル値のアドレス指定のためにブロックで使用するインデックス付けのルールを指定します。このチェック ボックスは、入力がブレークポイント データの最後の要素に等しい、またはより大きい場合に関係します。丸めのため、このチェック ボックスをオンにしてオフに戻すと、最後のブレークポイントについて、シミュレーションとコード生成との間で異なる結果となる可能性があります。
チェック ボックス | ブロックで使用されるインデックス | 区間分割 |
---|---|---|
オン | [テーブルとブレークポイント] タブのブレークポイント データの最後の要素 | 0 |
オフ | [テーブルとブレークポイント] タブのブレークポイント データの最後から 2 番目の要素 | 1 |
ブレークポイント セット bp の範囲内の入力 u が与えられたとき、区間分割 f は 0 f 1 の範囲内で次のように計算されます。
ブレークポイント セットが [1 4 5]
で入力 u が 5.5
であると仮定します。このチェック ボックスをオンにした場合、インデックスは最後の要素 (5
) のインデックスになり、区間分割は 0 です。このチェック ボックスをオフにした場合、インデックスは最後から 2 番目の要素 (4
) になり、区間分割は 1 です。
このパラメーターを有効にするには、次のように設定します。
[内挿法] を [線形]
に。
[外挿法] を [クリップ]
に。
ブロック パラメーター: UseLastTableValue |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
すべての入力データに対して入力端子を使用
— 1 つの端子のみを使用off
(既定値) | on
n 次元テーブルに対応した n
個の要素分の幅を有する信号を想定する入力端子を 1 つのみ使用するには、このチェック ボックスをオンにします。このオプションは、多数のルックアップ テーブルを含むブロック線図上でライン クラッターを削除するときに便利です。
メモ
このチェック ボックスを選択すると、u
ラベルが付いた 1 つの入力端子がブロックに現れます。
ブロック パラメーター: UseOneInputPortForAllInputData |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
生成コードの範囲外入力に対する保護を削除
— 範囲外入力値をチェックするコードを削除off
(既定値) | on
範囲外の入力値をチェックするコードを含むかどうかを指定します。
チェック ボックス | 結果 | 使用時 |
---|---|---|
| 生成コードには範囲外のブレークポイント入力をチェックするための条件文が含まれません。 入力が範囲外の場合、生成されたコードに未定義の動作が発生する可能性があります。 |
コード効率の場合 |
|
生成されたコードには範囲外の入力をチェックするための条件文が含まれます。 |
セーフティ クリティカルなアプリケーションの場合 |
入力が範囲外でない場合、[生成コードの範囲外インデックスに対する保護を削除] チェック ボックスをオンにしてコードの効率性を高めることができます。既定の設定では、このチェック ボックスはオフです。セーフティ クリティカルなアプリケーションの場合、このチェック ボックスをオンにしないでください。[生成コードの範囲外インデックスに対する保護を削除] チェック ボックスをオンにする場合は、最初にモデルの入力が範囲内であることを確認します。次に例を示します。
[生成コードの範囲外インデックスに対する保護を削除] チェック ボックスをオフにします。
[範囲外入力の診断] パラメーターを Error
に設定します。
ノーマル モードでモデルのシミュレーションを実行します。
範囲外エラーがある場合は、範囲内に修正してシミュレーションをもう一度実行します。
シミュレーションによって範囲外の入力エラーが発生しなくなったら、[生成コードの範囲外インデックスに対する保護を削除] チェック ボックスをオンにします。
メモ
[生成コードの範囲外インデックスに対する保護を削除] チェック ボックスをオンにした際に入力が範囲外の場合、生成されたコードの動作は未定義となります。
アプリケーションによって、次のモデル アドバイザー チェックを実行して、このチェック ボックスが使用されていることを確認できます。
[製品別] 、 [Embedded Coder] 、 [計算量が多い範囲外のチェック コードを生成する Lookup Table ブロックを識別します]
[製品別] 、 [Simulink Check] 、 [モデリング標準] 、 [DO-178C/DO-331 チェック] 、 [Lookup Table ブロックの使用をチェックします]
モデル アドバイザーの詳細については、モデル アドバイザー チェックの実行を参照してください。
また、このチェック ボックスをオンにしても安全かどうかを判断するには、Simulink Design Verifier™ ライセンスがある場合、ブロック入力範囲違反の検出 (Simulink Design Verifier)チェックを使用することを検討してください。
ブロック パラメーター: RemoveProtectionInput |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
コード生成で調整可能なテーブル サイズをサポート
— 生成コード内で調整可能なテーブル サイズを有効化off
(既定値) | on
このチェック ボックスを選択して、生成コード内で調節可能なテーブル サイズを有効にします。このオプションは、コードの再生成や再コンパイルを行わずに、ルックアップ テーブルのサイズと値および生成されたコードのブレークポイント データを変更できるようにします。ルックアップ テーブルのサイズとブレークポイント データのサイズは減らすことだけが可能です。
[内挿法] を [3 次スプライン]
に設定した場合、このチェック ボックスは使用できません。
ブロック パラメーター: SupportTunableTableSize |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
サンプル時間
— サンプル時間を -1
以外の値として指定-1
(既定値) | スカラー | ベクトルサンプル時間を -1 以外の値で指定します。詳細については、サンプル時間の指定を参照してください。
このパラメーターは、明示的に -1
以外の値に設定されていない限り表示されません。詳細は、サンプル時間が推奨されないブロックを参照してください。
ブロック パラメーター: SampleTime |
型: 文字ベクトル |
値: スカラーまたはベクトル |
既定の設定: '-1' |
次元ごとの最大インデックス
— 各テーブル次元の最大インデックス値[]
(既定値) | scalar or vector of positive integer values
例: 5 行 7 列の表は [4 6]
ゼロベースのインデックスを使用して、テーブルの次元ごとに最大インデックス値を指定します。次のデータ型を使って、正の整数値のスカラーまたはベクトルを指定できます。
組み込み浮動小数点型:double
および single
組み込み整数型:int8
、int16
、int32
、uint8
、uint16
、およびuint32
有効な指定の例には次のものがあります。
5 行 7 列の表は [4 6]
3x6x10 の表は [int8(2) int16(5) int32(9)]
コード生成の値がテーブル データの次元より 1 少ない Simulink.Parameter
。詳細については、生成コード内で調節可能なテーブル サイズを参照してください。
このパラメーターを有効にするには、[コード生成で調整可能なテーブル サイズをサポート] をオンにします。生成されたコードでこのパラメーターを調整すると、新しいテーブル データおよびブレークポイントが調整されたパラメーター値とともに提供されます。
ブロック パラメーター: MaximumIndicesForEachDimension |
型: 文字ベクトル |
値: 正の整数値のスカラーまたはベクトル |
既定の設定: '[]' |
テーブル データ
— テーブル データのデータ型[継承: 出力と同じ]
) (既定値) | double
| single
| half
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| [fixdt(1,16)]
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
テーブル データ型を指定します。以下を指定可能です。
データ型継承ルール (例: 継承: 出力と同じ]
)
組み込みデータ型名 (例: single
)
データ型オブジェクト名 (例: Simulink.NumericType
オブジェクト)
データ型を評価する式 (例: fixdt(1,16,0)
)
[データ型アシスタントを表示] ボタン をクリックして、データ型の属性の設定に役立つ [データ型アシスタント] を表示します。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
ヒント
以下の場合には、出力データ型とは異なるテーブル データ型を指定します。
出力信号よりも小さいタイプを使用するテーブル データの保存のためのメモリ必要量が少ない場合
異なる出力データ型の 2 つの n-D Lookup Table ブロック間で事前スケーリングされたテーブル データを共有する場合
異なる出力データ型のブロックに対して生成されたコード内のカスタム ストレージ テーブル データを共有する場合
このパラメーターを有効にするには、[テーブルとブレークポイント] タブの [テーブル データ] を [ダイアログ]
に設定します。
ブロック パラメーター: TableDataTypeStr |
型: 文字ベクトル |
値: 'Inherit: Inherit from 'Table data'' | 'Inherit: Same as
output' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16'
| 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)'
| 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'|'<data type
expression>' |
既定の設定: 'Inherit: Same as output' |
テーブル データの最小値
— テーブル データの最小値[]
| scalar
テーブル データの最小値を指定します。既定値は []
(指定なし) です。
ブロック パラメーター: TableMin |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[]' |
テーブル データの最大値
— テーブル データの最大値[]
| scalar
テーブル データの最大値を指定します。既定値は []
(指定なし) です。
ブロック パラメーター: TableMax |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[]' |
ブレークポイント
— ブレークポイント データ型[継承: 対応する入力と同じ]
) (既定値) | double
| single
| half
| 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>
ブレークポイント データのセットのデータ型を指定します。以下を指定可能です。
データ型継承ルール (例: 継承: 対応する入力と同じ]
)
組み込みデータ型名 (例: single
)
データ型クラスの名前 (例: 列挙データ型クラス)
データ型オブジェクト名 (例: Simulink.NumericType
オブジェクト)
データ型を評価する式 (例: fixdt(1,16,0)
)
ヒント
ブレークポイントは順序付けされていない列挙データをサポートします。結果として、線形探索も順序付けされていません。これは柔軟性をもたらしますが、パフォーマンスに影響する可能性があります。検索はブレークポイントの最初の要素から開始されます。
[前回のインデックス結果を使ってインデックス検索を始める] チェック ボックスがオンの場合、順序付けされた単調増加のデータを使用しなければなりません。この順序付けはパフォーマンスを向上させます。
列挙型データでは、[外挿法] は Clip
でなければなりません。
ブロックは列挙型データに対する範囲外の入力をサポートしません。列挙型データを指定する場合、ブレークポイント データセットに列挙全体を含めるようにします。たとえば、関数 enumeration
を使用します。
このブロックで列挙型データを使用する際の制限を次に示します。
ブロックは列挙型データに対する範囲外の入力をサポートしません。列挙型データを指定する場合、ブレークポイント データセットに列挙全体を含めるようにします。たとえば、関数 enumeration
を使用します。
[データ型アシスタントを表示] ボタン をクリックして、データ型の属性の設定に役立つ [データ型アシスタント] を表示します。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
ヒント
以下の場合には、対応する入力データ型とは異なるブレークポイント データ型を指定します。
入力信号よりも小さいタイプを使用するブレークポイント データの保存のためのメモリ必要量が少ない場合
異なる入力データ型をもつ 2 つの n-D Lookup Table ブロック間で事前スケーリングされたブレークポイント データを共有する場合
異なる入力データ型のブロックに対して生成されたコード内のカスタム ストレージ ブレークポイント データを共有する場合
このパラメーターを有効にするには、[テーブルとブレークポイント] タブの対応する [ブレークポイント] パラメーターを [ダイアログ]
に設定します。
ブロック パラメーター: BreakpointsForDimension1DataTypeStr | BreakpointsForDimension2DataTypeStr| ... | BreakpointsForDimension30DataTypeStr |
型: 文字ベクトル |
値: 'Inherit: Same as corresponding input' | 'Inherit: Inherit from
'Breakpoint data'' | 'double' | 'single' | 'half' | 'int8' |
'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' |
'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' |
'fixdt(1,16,2^0,0)'|'<data type expression>' |
既定の設定: 'Inherit: Same as corresponding input' |
ブレークポイントの最小値
— ブレークポイント データが取りうる最小値[]
| scalar
ブレークポイント データのセットの最小値を指定します。既定値は []
(指定なし) です。
ブロック パラメーター: BreakpointsForDimension1Min | BreakpointsForDimension2Min | ... | BreakpointsForDimension30Min |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[]' |
ブレークポイントの最大値
— ブレークポイント データが取りうる最大値[]
| scalar
ブレークポイント データのセットの最大値を指定します。既定値は []
(指定なし) です。
ブロック パラメーター: BreakpointsForDimension1Max | BreakpointsForDimension2Max | ... | BreakpointsForDimension30Max |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[]' |
小数部
— 小数部データ型[継承: 内部ルールによる継承]
(既定値) | double
| single
| fixdt(1,16,0)
| <data type expression>
ブレークポイント間の位置のデータ型を指定します。以下を指定可能です。
データ型継承ルール (例: 継承: 内部ルールによる継承]
)
組み込みデータ型名 (例: single
)
データ型オブジェクト名 (例: Simulink.NumericType
オブジェクト)
データ型を評価する式 (例: fixdt(1,16,0)
)
[データ型アシスタントを表示] ボタン をクリックして、データ型の属性の設定に役立つ [データ型アシスタント] を表示します。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
ブロック パラメーター: FractionDataTypeStr |
型: 文字ベクトル |
値: 'Inherit: Inherit via internal rule' | 'double' | 'single' |
'fixdt(1,16,0)'|'<data type expression>' |
既定の設定: 'Inherit: Inherit via internal rule' |
中間結果
— 中間結果のデータ型 [継承: 出力と同じ]
) (既定値) | [継承: 内部ルールによる継承]
| double
| single
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
中間結果のデータ型を指定します。以下を指定可能です。
データ型継承ルール (例: 継承: 出力と同じ]
)
組み込みデータ型名 (例: single
)
データ型オブジェクト名 (例: Simulink.NumericType
オブジェクト)
データ型を評価する式 (例: fixdt(1,16,0)
)
[データ型アシスタントを表示] ボタン をクリックして、データ型の属性の設定に役立つ [データ型アシスタント] を表示します。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
ヒント
このパラメーターを使用して、内部計算に対してテーブル データや出力データよりも高い (または低い) 精度を指定します。
ブロック パラメーター: IntermediateResultsDataTypeStr |
型: 文字ベクトル |
値: 'Inherit: Inherit via internal rule' | 'Inherit: Same as
output' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' |
'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)'
| 'fixdt(1,16,2^0,0)'|'<data type expression>' |
既定の設定: 'Inherit: Same as output' |
出力
— 出力データ型[継承: 入力と同じ
(既定値) | double
| single
| half
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16)
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
出力データ型を指定します。以下を指定可能です。
データ型継承ルール (例: 継承: 逆伝播による継承
)
組み込みデータ型名 (例: single
)
データ型オブジェクト名 (例: Simulink.NumericType
オブジェクト)
データ型を評価する式 (例: fixdt(1,16,0)
)
[データ型アシスタントを表示] ボタン をクリックして、データ型の属性の設定に役立つ [データ型アシスタント] を表示します。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
ブロック パラメーター: OutDataTypeStr |
型: 文字ベクトル |
値: 'Inherit: Inherit via back propagation' | 'Inherit: Inherit
from table data' | 'Inherit: Same as first input' | 'double' |
'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32'
| 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' |
'fixdt(1,16,2^0,0)'|'<data type expression' |
既定の設定: 'Inherit: Same as first input' |
出力の最小値
— ブロックが出力可能な最小値 []
| scalar
ブロックが出力する最小値を指定します。既定値は []
(指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。
パラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。
ブロック パラメーター: OutMin |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[]' |
出力の最大値
— ブロックが出力可能な最大値[]
| scalar
ブロックが出力する最大値を指定します。既定値は []
(指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。
パラメーター範囲のチェック (ブロック パラメーターの最小値と最大値の指定を参照)
シミュレーション範囲のチェック (信号範囲の指定を参照)
固定小数点データ型の自動スケーリング
モデルから生成するコードの最適化。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。
ブロック パラメーター: OutMax |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[]' |
内部ルール優先順位
— 中間計算の内部ルール速度
(既定値) | 精度
中間計算の内部ルールを指定します。より速く計算するには [速度]
を選択します。この場合、通常で最大 2 ビットの精度が失われる場合があります。
ブロック パラメーター: InternalRulePriority |
型: 文字ベクトル |
値: 'Speed' | 'Precision' |
既定の設定: 'Speed' |
すべての入力が同じデータ型をもつ
— すべての入力が同じデータ型をもつon
(既定値) | off
これを選択した場合、すべての入力が同じデータ型でなければなりません。
ブロック パラメーター: InputSameDT |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'on' |
固定小数点ツールによる変更に対してデータ型の設定をロックする
— 固定小数点ツールがデータ型をオーバーライドするのを防止off
(既定値) | on
このパラメーターを選択して、このブロックについて指定したデータ型を固定小数点ツールがオーバーライドするのを防止します。詳細については、出力データ型設定のロック (Fixed-Point Designer)を参照してください。
ブロック パラメーター: LockScale |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
整数丸めモード
— 固定小数点演算の丸めモード最も簡潔
(既定値) | 正方向
| 最も近い偶数方向
| 負方向
| 最も近い正の整数方向
| 最も近い整数方向
| ゼロ方向
シミュレーションまたはモデルから生成されたコードの実行中に起こる固定小数点ルックアップ テーブルの計算の丸めモードを選択します。詳細については、丸め (Fixed-Point Designer)を参照してください。
このオプションは、ブロック パラメーターの値の丸めには影響しません。Simulink は、そのような値を最近傍の表現可能な整数値に丸めます。ブロックパラメーターの丸めを制御するためには、MATLAB® 丸め関数を使用する式を、ブロックのダイアログ ボックスの編集フィールドに入力します。
ブロック パラメーター: RndMeth |
型: 文字ベクトル |
値: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
既定の設定: 'Simplest' |
整数オーバーフローで飽和
— オーバーフロー アクションの方法off
(既定値) | on
アクション | このアクションを行う理由 | オーバーフロー発生時に起きること | 例 |
---|---|---|---|
このチェック ボックスをオンにする ( | モデルでオーバーフローが発生する可能性があるので、生成コードに飽和保護を明示的に組み込むことをお勧めします。 | オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。 | 符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和します。 |
このチェック ボックスをオンにしない ( | 生成コードの効率を最適化することをお勧めします。 ブロックが範囲外の信号を処理する方法を指定しすぎないようにすることをお勧めします。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。 | オーバーフローは、データ型によって表現される適切な値にラップされます。 | 数値 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。 |
ヒント
モデルを R2009a 以前のバージョンとして保存する場合、このチェック ボックスの設定による影響はなく、飽和コードも表示されません。これにより下位互換性が維持されます。
このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。
ブロック パラメーター: SaturateOnIntegerOverflow |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
データ型 |
|
直接フィードスルー |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
ルックアップ テーブルがあり、そのサイズを生成コード内で調節可能にするとします。Simulink.LookupTable
および Simulink.Breakpoint
オブジェクトを使用して、生成されたコードでのキャリブレーションのためにルックアップ テーブル データを設定する場合、オブジェクトの SupportTunableSize
プロパティを使用して、調整可能なテーブル サイズを有効にします。これらのクラスを使用しない場合、n-D Lookup Table ブロックで [コード生成で調整可能なテーブル サイズをサポート] パラメーターを使用して調整可能なテーブル サイズを有効にします。
次のように仮定します。
モデルのプリロード関数に Simulink.Parameter
構造体を定義します。
p = Simulink.Parameter; p.Value.MaxIdx = [2 2]; p.Value.BP1 = [1 2 3]; p.Value.BP2 = [1 4 16]; p.Value.Table = [4 5 6; 16 19 20; 10 18 23]; p.DataType = 'Bus: slLookupTable'; p.CoderInfo.StorageClass = 'ExportedGlobal'; % Create bus object slBus1 from MATLAB structure Simulink.Bus.createObject(p.Value); slLookupTable = slBus1; slLookupTable.Elements(1).DataType = 'uint32';
これらのブロック パラメーターは、n-D Lookup Table ブロックに適用されます。
パラメーター | 値 |
---|---|
テーブルの次元数 | 2 |
テーブル データ | p.Table |
ブレークポイント 1 | p.BP1 |
ブレークポイント 2 | p.BP2 |
コード生成で調整可能なテーブル サイズをサポート | on |
次元ごとの最大インデックス | p.MaxIdx |
生成された
ヘッダー ファイルには、次のような型定義が含まれます。model
_types.h
typedef struct { uint32_T MaxIdx[2]; real_T BP1[3]; real_T BP2[3]; real_T Table[9]; } slLookupTable;
生成された
ファイルには、次のようなコードが含まれます。model
.c
/* Exported block parameters */ slLookupTable p = { { 2U, 2U }, { 1.0, 2.0, 3.0 }, { 1.0, 4.0, 16.0 }, { 4.0, 16.0, 10.0, 5.0, 19.0, 18.0, 6.0, 20.0, 23.0 } } ; /* More code */ /* Model output function */ static void ex_lut_nd_tunable_table_output(int_T tid) { /* Lookup_n-D: '<Root>/n-D Lookup Table' incorporates: * Inport: '<Root>/In1' * Inport: '<Root>/In2' */ Y = look2_binlcpw(U1, U2, p.BP1, p.BP2, p.Table, ... p.MaxIdx, p.MaxIdx[0] + 1U); /* Outport: '<Root>/Out1' */ ex_lut_nd_tunable_table_Y.Out1 = Y; /* tid is required for a uniform function interface. * Argument tid is not used in the function. */ UNUSED_PARAMETER(tid); }
強調表示されているコード行は、ルックアップ テーブルの調節可能なテーブル サイズを指定します。コードの再生成や再コンパイルを行わずに、ルックアップ テーブルのサイズと値、およびブレークポイント データが変更できるようになります。
以下のように定義された列挙クラスをもつルックアップ テーブルがあるとします。
classdef(Enumeration) Gears < Simulink.IntEnumType enumeration GEAR1(1), GEAR2(2), GEAR3(4), GEAR4(8), SPORTS(16), REVERSE(-1), NEUTRAL(0) end end
n-D Lookup ブロックには以下の設定があります。
[次元数] は 1
。
[テーブル データ] 値は [5 10 20 40 80 -5
0]
。
[ブレークポイント 1] 値は enumeration('Gears')
。
[内挿法] が [フラット]。
順序付けされていない検索では、[インデックス検索法] を [線形探索]
に設定し、[前回のインデックス結果を使ってインデックス検索を始める] チェック ボックスをオフにします。
シミュレーションはベクトル [10 -5 80]
を出力します。これは GEAR2
、REVERSE
、および SPORTS
に対応します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。1-D Lookup Table ブロックの HDL コード生成のサポートの詳細については、HDL コード生成を参照してください。
Direct Lookup Table (n-D) | Interpolation Using Prelookup | Lookup Table Dynamic | Prelookup | Simulink.Breakpoint
| Simulink.LookupTable
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.