Main Content

Direct Lookup Table (n-D)

要素、ベクトル、または 2 次元行列を検索するための N 次元テーブルのインデックス付け

  • Direct Lookup Table (n-D) block

ライブラリ:
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 番目の入力は、ゼロベースのインデックスを次のテーブルの次元に指定し、以下同様になります。

出力形状出力の次元最初の入力にマップされるテーブルの次元
要素01
ベクトル12
行列23

4 次元テーブルから値のベクトルを選択するとします。

ブロック入力端子からテーブルの次元へは次のマッピングが適用されます。

入力端子テーブルの次元のインデックス
12
23
34

ブロック アイコンの外見の変更

ブロック アイコンの外見は、設定したパラメーターに従って変化します。テーブルの次元が 4 より大きい場合、アイコンは 4 次元バージョンのアイコンと同じですが、上部に正確な次元数が示されます。

[テーブル データ] パラメーターを使用する場合、既定の列優先の動作では、これらのアイコンが表示されます。一部のアイコンについては、コンフィギュレーション パラメーターの [数学とデータ型][行優先の配列レイアウトに最適化されたアルゴリズムを使用] を選択した場合は別のアイコンになります。

テーブルからの選択を入力するオブジェクトテーブルの次元数
1234

要素

ベクトル

2-D 行列

該当なし

テーブル入力端子を使用する場合、これらのアイコンが表示されます。

テーブルからの選択を入力するオブジェクトテーブルの次元数
1234

要素

ベクトル

2-D 行列

該当なし

端子

入力

すべて展開する

既定の列優先のアルゴリズムの場合、ゼロベースのインデックスを出力の次元より 1 つ大きいテーブルの次元に指定する最初の入力端子 (0、1 または 2)。2 番目の入力は、ゼロベースのインデックスを次のテーブルの次元に指定し、以下同様になります。すべてのインデックス入力は実数値でなければなりません。

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

既定の列優先のアルゴリズムの場合、ゼロベースのインデックスを出力の次元より N の数だけ大きいテーブルの次元に指定する N 番目の入力端子 (0、1 または 2)。入力数は出力の形状により異なります。すべてのインデックス入力は実数値でなければなりません。

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

テーブル データ。ベクトル、行列または N 次元配列として指定します。テーブル サイズは [次元数] パラメーターの次元に一致していなければなりません。ブロックの出力データ型は、テーブルのデータ型と同じです。

依存関係

この端子を有効にするには、[テーブルを入力とする] チェック ボックスをオンにします。

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

出力

すべて展開する

出力スライス。スカラー、ベクトルまたは 2 次元行列として指定します。ブロックの出力のサイズは、[テーブルからこのオブジェクトの選択を入力] パラメーターの設定により決定されます。出力のデータ型は、テーブルのデータ型と同じです。

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

パラメーター

すべて展開する

メイン

テーブル

[テーブル データ] パラメーターがもたなければならない次元数。この値によって、テーブルの独立変数の数が決まり、ブロックへの入力の数が決まります。

指定する内容方法

1、2、3、または 4

ドロップダウン リストから値を選択します。

大きいテーブルの次元

フィールドに正の整数を直接入力します。

このブロックがサポートするテーブルの最大の次元数は 30 です。

プログラムでの使用

ブロック パラメーター: NumberOfTableDimensions
型: 文字ベクトル
値: '1' | '2' | '3' | '4' | ... |'30'|
既定の設定: '2'

テーブル データをブロック入力として Direct Lookup Table (n-D) ブロックに指定するには、このチェック ボックスをオンにします。このチェック ボックスをオンにすると、新しい入力端子 T が表示されます。この端子を使用してテーブル データを入力します。

プログラムでの使用

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

出力値のテーブルを指定します。テーブル サイズは [テーブルの次元数] パラメーターの次元に一致していなければなりません。

ヒント

ブロック線図の編集時は、テーブル データ フィールドを空にしておいてかまいません。しかし、シミュレーションの場合は、テーブル データ の次元数を テーブルの次元数 と一致させる必要があります。MATLAB® で多次元配列を作成する方法の詳細については、多次元配列を参照してください。

[編集] をクリックしてルックアップ テーブル エディターを開きます。詳細については、Edit Lookup Tablesを参照してください。

依存関係

[テーブル データ] フィールドを有効にするには、[テーブルを入力とする] チェック ボックスをオフにします。

プログラムでの使用

ブロック パラメーター: Table
型: 文字ベクトル
値: scalar, vector, matrix, or N-D array
既定の設定: '[4 5 6;16 19 20;10 18 23]'
アルゴリズム

出力データが単独の要素、ベクトル、または 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 以外の値に設定した場合にのみ表示されます。詳細は、サンプル時間が推奨されないブロックを参照してください。

プログラムでの使用

ブロック パラメーター: SampleTime
型: string スカラーまたは文字ベクトル
既定の設定: "-1"

コード生成

範囲外の入力値をチェックするコードを含むかどうかを指定します。

チェック ボックス結果使用時

on

生成コードには範囲外のブレークポイント入力をチェックするための条件文が含まれません。

入力が範囲外の場合、生成されたコードに未定義の動作が発生する可能性があります。

コード効率の場合

off

生成されたコードには範囲外の入力をチェックするための条件文が含まれます。

セーフティ クリティカルなアプリケーションの場合

入力が範囲外でない場合、[生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオンにしてコードの効率性を高めることができます。既定の設定では、このチェック ボックスはオフです。セーフティ クリティカルなアプリケーションの場合、このチェック ボックスをオンにしないでください。[生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオンにする場合は、最初にモデルの入力が範囲内であることを確認します。次に例を示します。

  1. [生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオフにします。

  2. [範囲外入力の診断] パラメーターを [Error] に設定します。

  3. ノーマル モードでモデルのシミュレーションを実行します。

  4. 範囲外エラーがある場合は、範囲内に修正してシミュレーションをもう一度実行します。

  5. シミュレーションによって範囲外の入力エラーが発生しなくなったら、[生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオンにします。

    メモ

    [生成コードの範囲外インデックスに対する保護を削除する] チェック ボックスをオンにした際に入力が範囲外の場合、生成されたコードの動作は未定義となります。

アプリケーションによって、次のモデル アドバイザー チェックを実行して、このチェック ボックスが使用されていることを確認できます。

  • [製品別][Embedded Coder][計算量が多い範囲外のチェック コードを生成する Lookup Table ブロックを識別します]

  • [製品別][Simulink Check][モデリング標準][DO-178C/DO-331 チェック][Lookup Table ブロックの使用をチェックします]

モデル アドバイザーの詳細については、モデル アドバイザー チェックの実行を参照してください。

また、このチェック ボックスをオンにしても安全かどうかを判断するには、Simulink® Design Verifier™ ライセンスがある場合、ブロック入力範囲違反の検出 (Simulink Design Verifier)チェックを使用することを検討してください。

プログラムでの使用

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

テーブルの属性

メモ

[テーブルを入力とする] を選択した場合、[テーブルの属性] ペインのパラメーターは使用できません。その場合、ブロックはラベル T の入力端子からすべてのテーブルの属性を継承します。

テーブル データの最小値を指定します。既定値は [] (指定なし) です。

プログラムでの使用

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

テーブル データの最大値を指定します。既定値は [] (指定なし) です。

プログラムでの使用

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

テーブル データ型を指定します。以下を指定可能です。

  • データ型継承ルール (例: 継承: 'テーブル データ' から継承])

  • 組み込みデータ型名 (例: single)

  • データ型クラスの名前 (例: 列挙データ型クラス)

  • データ型を評価する式 (例: fixdt(1,16,0))

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

プログラムでの使用

ブロック パラメーター: 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''

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

プログラムでの使用

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

ブロックの特性

データ型

Boolean | double | enumerated | fixed pointa | half | integer | single

直達

はい

多次元信号

はい

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

a このブロックは、'テーブル' データの固定小数点データ型のみサポートします。

拡張機能

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

バージョン履歴

R2006a より前に導入