Direct Lookup Table (n-D)
要素、ベクトル、または 2 次元行列を検索するための N 次元テーブルのインデックス付け
ライブラリ:
Simulink /
Lookup Tables
HDL Coder /
Lookup Tables
説明
Direct Lookup Table (n-D) ブロックは、要素、ベクトルまたは 2 次元行列を取得するために N 次元テーブルにインデックス付けを行います。1 番目の選択インデックスは最上位 (または左) の入力端子に対応します。テーブル データをブロックへの入力として提供するか、テーブル データをブロックのダイアログ ボックスで定義するかを選択できます。入力端子の数および出力のサイズは、テーブルの次元数および選択した出力スライスに依存します。
2 次元テーブルからベクトルを選択した場合、出力ベクトルは、モデル コンフィギュレーション パラメーターの [数学とデータ型] 、 [行優先の配列レイアウトに最適化されたアルゴリズムを使用] の設定に応じて列または行のどちらかになります。ブロック入力はゼロベースのインデックスです。詳細については、[テーブルからこのオブジェクトの選択を入力] パラメーターを参照してください。
Direct Lookup Table ブロックではシンボリック次元がサポートされます。
ブロックの入力と出力
Direct Lookup Table (n-D) ブロックは、入力を n 次元テーブルのゼロベースのインデックスとして使用します。入力数は出力の形状 (要素、ベクトル、2 次元行列) により異なります。
出力値のセットは、テーブル データ パラメーターで定義します。既定の列優先のアルゴリズムの動作では、最初の入力は、ゼロベースのインデックスを出力の次元より 1 つ大きいテーブルの次元に指定します。2 番目の入力は、ゼロベースのインデックスを次のテーブルの次元に指定し、以下同様になります。
出力形状 | 出力の次元 | 最初の入力にマップされるテーブルの次元 |
---|---|---|
要素 | 0 | 1 |
ベクトル | 1 | 2 |
行列 | 2 | 3 |
4 次元テーブルから値のベクトルを選択するとします。
ブロック入力端子からテーブルの次元へは次のマッピングが適用されます。
入力端子 | テーブルの次元のインデックス |
---|---|
1 | 2 |
2 | 3 |
3 | 4 |
ブロック アイコンの外見の変更
ブロック アイコンの外見は、設定したパラメーターに従って変化します。テーブルの次元が 4 より大きい場合、アイコンは 4 次元バージョンのアイコンと同じですが、上部に正確な次元数が示されます。
[テーブル データ] パラメーターを使用する場合、既定の列優先の動作では、これらのアイコンが表示されます。一部のアイコンについては、コンフィギュレーション パラメーターの [数学とデータ型] 、 [行優先の配列レイアウトに最適化されたアルゴリズムを使用] を選択した場合は別のアイコンになります。
テーブルからの選択を入力するオブジェクト | テーブルの次元数 | |||
---|---|---|---|---|
1 | 2 | 3 | 4 | |
要素 |
|
|
|
|
ベクトル |
|
|
|
|
2-D 行列 | 該当なし |
|
|
|
テーブル入力端子を使用する場合、これらのアイコンが表示されます。
テーブルからの選択を入力するオブジェクト | テーブルの次元数 | |||
---|---|---|---|---|
1 | 2 | 3 | 4 | |
要素 |
|
|
|
|
ベクトル |
|
|
|
|
2-D 行列 | 該当なし |
|
|
|
例
テーブル データを Direct Lookup Table ブロックへの入力として指定
この例では、テーブル データを Direct Lookup Table ブロックの入力として指定する方法を示します。次のモデルでは、a
は、次のモデル プリロード関数で定義する線形増分値の 4 次元配列です。
a = reshape(1:2800, [4 5 20 7]);
モデルを実行すると、次の結果を得ます。
TableData というラベルの付いたブロックは、double データ型で、4 次元配列を Direct Lookup Table (n-D) ブロックに送ります。Direct Lookup Table (n-D) ブロックはゼロベースのインデックスを使用するので、出力は次のようになります。
a(:,2,4,3)
出力のデータ型は、テーブル データ入力信号と同じ double です。
Direct Lookup Table ブロックのダイアログ ボックスでのテーブル データの指定
この例では、Direct Lookup Table (n-D) ブロックのダイアログ ボックスでテーブル データを指定する方法を示します。次のモデルでは、テーブル データは、次のモデル プリロード関数で定義する線形増分値の 4 次元配列です。
a = reshape(1:2800, [4 5 20 7]);
モデルを実行すると、次の結果を得ます。
Direct Lookup Table (n-D) ブロックはゼロベースのインデックスを使用するので、出力は次のようになります。
a(:,2,4,3)
出力データ型は、Direct Lookup Table ブロックの [テーブルのデータ型] (int16
に設定) と一致します。
端子
入力
Port_1 — i1
入力値のインデックス付け
スカラー | ベクトル
既定の列優先のアルゴリズムの場合、ゼロベースのインデックスを出力の次元より 1 つ大きいテーブルの次元に指定する最初の入力端子 (0、1 または 2)。2 番目の入力は、ゼロベースのインデックスを次のテーブルの次元に指定し、以下同様になります。すべてのインデックス入力は実数値でなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
Port_N — N
入力値のインデックス付け
スカラー | ベクトル
既定の列優先のアルゴリズムの場合、ゼロベースのインデックスを出力の次元より N の数だけ大きいテーブルの次元に指定する N 番目の入力端子 (0、1 または 2)。入力数は出力の形状により異なります。すべてのインデックス入力は実数値でなければなりません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
T — テーブル データ
ベクトル | 行列 | N 次元配列
テーブル データ。ベクトル、行列または N 次元配列として指定します。テーブル サイズは [次元数] パラメーターの次元に一致していなければなりません。ブロックの出力データ型は、テーブルのデータ型と同じです。
依存関係
この端子を有効にするには、[テーブルを入力とする] チェック ボックスをオンにします。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
出力
Port_1 — ベクトルまたは 2 次元行列の出力要素
スカラー | ベクトル | 2 次元行列
出力スライス。スカラー、ベクトルまたは 2 次元行列として指定します。ブロックの出力のサイズは、[テーブルからこのオブジェクトの選択を入力] パラメーターの設定により決定されます。出力のデータ型は、テーブルのデータ型と同じです。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
パラメーター
メイン
テーブルテーブルの次元数 — テーブル データの次元数
2
(既定値) | 1
| 3
| 4
[テーブル データ] パラメーターがもたなければならない次元数。この値によって、テーブルの独立変数の数が決まり、ブロックへの入力の数が決まります。
指定する内容 | 方法 |
---|---|
1、2、3、または 4 | ドロップダウン リストから値を選択します。 |
大きいテーブルの次元 | フィールドに正の整数を直接入力します。 このブロックがサポートするテーブルの最大の次元数は 30 です。 |
プログラムでの使用
ブロック パラメーター: NumberOfTableDimensions |
型: 文字ベクトル |
値: '1' | '2' | '3' | '4' | ... |'30'| |
既定の設定: '2' |
テーブルを入力とする — テーブル データをブロック入力として指定
off
(既定値) | on
テーブル データをブロック入力として Direct Lookup Table (n-D) ブロックに指定するには、このチェック ボックスをオンにします。このチェック ボックスをオンにすると、新しい入力端子 T
が表示されます。この端子を使用してテーブル データを入力します。
プログラムでの使用
ブロック パラメーター: TableIsInput |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
テーブル データ — 出力値のテーブル
[4 5 6; 16 19 20; 10 18 23]
(既定値) | scalar, vector, matrix, or N-D array
出力値のテーブルを指定します。テーブル サイズは [テーブルの次元数] パラメーターの次元に一致していなければなりません。
ヒント
ブロック線図の編集時は、テーブル データ フィールドを空にしておいてかまいません。しかし、シミュレーションの場合は、テーブル データ の次元数を テーブルの次元数 と一致させる必要があります。MATLAB® で多次元配列を作成する方法の詳細については、多次元配列を参照してください。
[編集] をクリックしてルックアップ テーブル エディターを開きます。詳細については、Edit Lookup Tablesを参照してください。
依存関係
[テーブル データ] フィールドを有効にするには、[テーブルを入力とする] チェック ボックスをオフにします。
プログラムでの使用
ブロック パラメーター: Table |
型: 文字ベクトル |
値: scalar, vector, matrix, or N-D array |
既定の設定: '[4 5 6;16 19 20;10 18 23]' |
テーブルからこのオブジェクトの選択を入力 — 出力が要素、ベクトルまたは 2 次元行列であるかの指定
Element
(既定値) | Vector
| 2-D Matrix
出力データが単独の要素、ベクトル、または 2 次元行列であるかを指定します。インデックス付けのための入力端子の数は、選択内容によって異なります。
選択 | インデックス付けのための入力端子の数 |
---|---|
要素 | テーブルの次元数 |
ベクトル | テーブルの次元数 - -1 |
2-D 行列 | テーブルの次元数 - -2 |
この番号付けは、MATLAB のインデックス付けと一致します。たとえば、4 次元テーブルのデータがある場合は、以下のガイドラインに従います。
アクセス対象 | 指定項目 | 例 |
---|---|---|
要素 | 4 インデックス | array(1,2,3,4) |
ベクトル | 3 インデックス | array(:,2,3,4) (既定の列優先のアルゴリズム) |
2-D 行列 | 2 インデックス | array(:,:,3,4) (既定の列優先のアルゴリズム) |
ヒント
[数学とデータ型] 、 [行優先の配列レイアウトに最適化されたアルゴリズムを使用] コンフィギュレーション パラメーターが設定されている場合、Direct Lookup Table ブロックの動作は列優先から行優先に変わります。このブロックの場合、列優先と行優先のアルゴリズムでは出力計算に意味的な違いがあり、異なる数値が出力されることがあります。たとえば、[テーブルからこのオブジェクトの選択を入力] パラメーターが [ベクトル]
に設定されているとします。選択されたベクトルの要素はテーブルのストレージ メモリ内で連続しています。次の表に、列優先と行優先のアルゴリズムの動作をテーブルの次元ごとに示します。
テーブルの次元 | 列優先のアルゴリズム | 行優先のアルゴリズム |
---|---|---|
2 次元のテーブル | 列ベクトルを選択 | 行ベクトルを選択 |
3 次元以上のテーブル | テーブルの最初の次元から出力ベクトルを選択 | テーブルの最後の次元から出力ベクトルを選択 |
直接ルックアップの列優先と行優先のアルゴリズムについて、3 次元のテーブルのベクトル出力で考えてみます。最後の次元は 3 次元テーブルの 3 番目の次元です。意味的な違いにより、列優先と行優先の直接ルックアップでは、出力されるベクトルのサイズや数値が異なる場合があります。
次の図は、3 次元テーブルとベクトル出力で構成された Direct Lookup Table (n-D) ブロックを示しています。既定では、ブロック アイコンに列優先のアルゴリズムが表示されます。
同じブロックで行優先のアルゴリズムを使用するには、[数学とデータ型] 、 [行優先の配列レイアウトに最適化されたアルゴリズムを使用] コンフィギュレーション パラメーターを変更して再コンパイルします。変更が反映され、ブロックのアイコンが行優先動作用に最適化されたアルゴリズムを示すアイコンに変わります。
行優先のサポートの詳細については、行列および配列のコード生成 (Simulink Coder)を参照してください。
プログラムでの使用
ブロック パラメーター: InputsSelectThisObjectFromTable |
型: 文字ベクトル |
値: 'Element' | 'Vector' | '2-D Matrix' |
既定の設定: 'Element' |
範囲外入力の診断 — 入力が範囲外の場合のブロックのアクション
警告
(既定値) | なし
| エラー
インデックスがテーブルの次元の範囲外である場合に警告またはエラーを表示するかどうかを指定します。オプションは次のとおりです。
なし
— 応答しません。警告
— 警告が表示され、シミュレーションは続行されます。エラー
— シミュレーションを終了し、エラーを表示します。
なし
または [警告]
を選択した場合、ブロックは、範囲外のインデックスをテーブルの次元に合わせて固定します。たとえば、5.3 のインデックスを指定したとき、そのテーブルの最大インデックスが 4 である場合、インデックスは 4 に固定されます。
プログラムでの使用
ブロック パラメーター: DiagnosticForOutOfRangeInput |
型: 文字ベクトル |
値: 'None' | 'Warning' | 'Error' |
既定の設定: 'Warning' |
サンプル時間 (継承は -1) — サンプルの間隔
-1
(既定値) | スカラー | ベクトル
サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1
に設定します。詳細については、サンプル時間の指定を参照してください。
依存関係
このパラメーターは、-1
以外の値に設定した場合にのみ表示されます。詳細は、サンプル時間が推奨されないブロックを参照してください。
プログラムでの使用
ブロック パラメーター: SampleTime |
型: string スカラーまたは文字ベクトル |
既定の設定: "-1" |
コード生成
生成コードの範囲外入力に対する保護を削除 — 範囲外入力値をチェックするコードを削除
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' |
テーブルの属性
メモ
[テーブルを入力とする] を選択した場合、[テーブルの属性] ペインのパラメーターは使用できません。その場合、ブロックはラベル T
の入力端子からすべてのテーブルの属性を継承します。
テーブルの最小値 — テーブル データに設定できる最小値
[]
(既定値) | finite, real, double, scalar
テーブル データの最小値を指定します。既定値は []
(指定なし) です。
プログラムでの使用
ブロック パラメーター: TableMin |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[]' |
テーブルの最大値 — テーブル データに設定できる最大値
[]
(既定値) | finite, real, double, scalar
テーブル データの最大値を指定します。既定値は []
(指定なし) です。
プログラムでの使用
ブロック パラメーター: TableMax |
型: 文字ベクトル |
値: スカラー |
既定の設定: '[]' |
テーブルのデータ型 — テーブル データのデータ型
継承: 'テーブル データ' から継承
(既定値) | double
| single
| half
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| boolean
| fixdt(1,16)
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| Enum:<class name>
| <data type expression>
テーブル データ型を指定します。以下を指定可能です。
データ型継承ルール (例:
[継承: 'テーブル データ' から継承]
)組み込みデータ型名 (例:
single
)データ型クラスの名前 (例: 列挙データ型クラス)
データ型を評価する式 (例:
fixdt(1,16,0)
)
データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、 をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
プログラムでの使用
ブロック パラメーター: TableDataTypeStr |
型: 文字ベクトル |
値: 'Inherit: Inherit from 'Table data'' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'boolean' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'|'Enum: <class name>'|'<data type expression>' |
既定の設定: 'Inherit: Inherit from 'Table data'' |
固定小数点ツールによる変更に対してデータ型の設定をロックする — 固定小数点ツールがデータ型をオーバーライドするのを防止
off
(既定値) | on
このパラメーターを選択して、このブロックについて指定したデータ型を固定小数点ツールがオーバーライドするのを防止します。詳細については、出力データ型設定のロック (Fixed-Point Designer)を参照してください。
プログラムでの使用
ブロック パラメーター: LockScale |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
ブロックの特性
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
このブロックには 1 つの既定の HDL アーキテクチャがあります。
ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
MAX 10 デバイス設定
Intel® MAX 10 デバイスを使用する場合、ルックアップ テーブルを RAM にマッピングするには、Quartus ツールでプロジェクトを作成するときに次の Tcl コマンドを追加します。
set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "SINGLE IMAGE WITH ERAM"
必須のブロック設定
テーブルの次元数: テーブルの次元数を 1 ~ 30 の間で選択します。
テーブルを入力とする:このチェック ボックスをオフにする。
範囲外入力の診断:
[なし]
、[警告]
(既定の設定)、または[エラー]
(推奨) を選択します。HDL コードを効率的に生成するためには[エラー]
を選択します。[なし]
または[警告]
を選択すると、HDL Coder は範囲外の入力を取り扱うための追加のロジックを生成します。
テーブル データの型指定とサイズ指定
テーブルの各次元のサイズは、2 のべき乗にすることをお勧めします。次元の長さ (最も内部の次元を "除く") が 2 のべき乗でない場合、HDL Coder は警告を出します。この方法に従うことで、テーブル インデックス演算中に乗算を回避でき、より効率的なテーブルをハードウェア内に実現できます。
ブロックのすべての端子にはスカラー値が必要です。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
このブロックは、[テーブル データ] の固定小数点データ型のみをサポートします。組み込みデータ型に加えて、インデックス入力でも、バイアスが 0、勾配が 1.0、小数部の長さが 0、語長が 128 以下の固定小数点データ型がサポートされます。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
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: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)