Main Content

Map

  • Map block

ライブラリ:
AUTOSAR Blockset / Classic Platform / Library Routines / Interpolation

説明

Map ブロックは、インデックスの検索を含む 2 次元の内挿されたテーブル ルックアップを実行します。テーブルは関数の 2 つの変数のサンプル表現となります。入力値はブレークポイント セットによってテーブル内の位置に関連付けられます。Prelookup ブロックと Prelookup Using Map ブロックを組み合わせて使用することで、このブロックと同じ演算を実行することもできます。

[数学とデータ型][行優先の配列レイアウトに最適化されたアルゴリズムを使用] コンフィギュレーション パラメーターを設定すると、ブロックの動作が列優先から行優先に変わります。これらのブロックでは、列優先のアルゴリズムと行優先のアルゴリズムは出力計算の順序が異なる場合があり、結果的に数値がわずかに異なる可能性があります。この機能には Simulink Coder™ または Embedded Coder™ のソフトウェアが必要です。行優先のサポートの詳細については、行列および配列のコード生成 (Simulink Coder)を参照してください。

AUTOSAR モデルに対して AUTOSAR 4.0 コード置換ライブラリ (CRL) を選択した場合は、このブロックから生成されるコードがブロック パラメーター ダイアログ ボックスで設定した AUTOSAR ライブラリ ルーチンに置き換えられます。

端子

入力

すべて展開する

1 番目の端子への実数値入力。定義される値のテーブルのルックアップまたは内挿により出力値にマッピングされます。

例: 0:10

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

2 番目の端子への実数値入力。定義される値のテーブルのルックアップまたは内挿により出力値にマッピングされます。

例: 0:10

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

出力

すべて展開する

入力値に基づいてテーブル値をルックアップまたは推定することで生成された出力。入力がブレークポイント セットのインデックス値と一致する場合、Map ブロックの出力はテーブル値になります。ブロック入力がブレークポイント セットのインデックス値と一致しないが範囲内の場合は、設定された内挿法に基づいてテーブル値から推定された値が出力として返されます。

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

パラメーター

すべて展開する

モデルに対して AUTOSAR 4.0 コード置換ライブラリ (CRL) を選択した場合は、このブロックから生成されるコードが、選択した AUTOSAR ルーチン ライブラリから置き換えられます。このパラメーターで、コード置換と検証チェックに固定小数点 (IFX) と浮動小数点 (IFL) のどちらを使用するかを選択できます。

このパラメーターは、このブロックで生成されるコードの置き換えに使用される AUTOSAR コード置換ライブラリ (CRL) ルーチンの名前を反映した値になります。命名規則に従って、ターゲットのルーチン ライブラリ、内挿法、およびブロック タイプを組み合わせた名前が付けられます。このパラメーターは参照のみを目的としており、編集することはできません。

テーブルの指定

リストから以下を選択します。

  • テーブルとブレークポイント — テーブル データとブレークポイントを指定します。これらのオプションを選択すると、次のパラメーターが有効になります。

    • テーブル データ

    • ブレークポイントの指定

    • ブレークポイント 1

    • ブレークポイント 2

    • テーブルとブレークポイントの編集

  • ルックアップ テーブル オブジェクト — 既存のルックアップ テーブル (Simulink.LookupTable) オブジェクトを使用します。このオプションを選択すると、[名前] フィールドおよび [テーブルとブレークポイントの編集] ボタンが有効になります。

プログラムでの使用

ブロック パラメーター: DataSpecification
型: 文字ベクトル
値: 'Table and breakpoints' | 'Lookup table object'
既定の設定: 'Table and breakpoints'

ルックアップ テーブル (Simulink.LookupTable) オブジェクトの名前を入力します。

依存関係

このパラメーターを有効にするには、[データの仕様][ルックアップ テーブル オブジェクト] に設定します。

プログラムでの使用

ブロック パラメーター: LookupTableObject
型: 文字ベクトル
値: Simulink.LookupTable オブジェクトの名前
既定の設定: ''

出力値のテーブルを入力します。

シミュレーションの実行時は、行列サイズは 2 次元でなければなりません。ただし、ブロック線図の編集時には、空行列 ([] として指定) または未定義のワークスペース変数を入力できます。この手法により、テーブル データに対する適切な次元の行列の指定は後回しにして、ブロック線図の編集を続けることができます。

依存関係

このパラメーターを有効にするには、[データの仕様][テーブルとブレークポイント] に設定します。

プログラムでの使用

ブロック パラメーター: Table
型: 文字ベクトル
値: テーブルの値の行列
既定の設定: '[4 5 6;16 19 20;10 18 23]'

明示的なブレークポイントまたは等間隔のブレークポイントを生成するパラメーターのどちらでデータを入力するか指定します。

  • ブレークポイント データを明示的に指定するには、このパラメーターを [明示的な値] に設定し、[ブレークポイント] パラメーターの横にあるテキスト ボックスにブレークポイント データを入力します。

  • 等間隔のブレークポイントを生成するパラメーターを指定するには、このパラメーターを [等間隔] に設定し、ブレークポイント データの次元ごとに [最初の点] パラメーターと [間隔] パラメーターに値を入力します。ブロックは、テーブル データから生成される点の数を計算します。

依存関係

このパラメーターを有効にするには、[データの仕様][テーブルとブレークポイント] に設定します。

プログラムでの使用

ブロック パラメーター: BreakpointsSpecification
型: 文字ベクトル
値: 'Explicit values' | 'Even spacing'
既定の設定: 'Explicit values'

[ブレークポイントの指定] パラメーターの値に基づいて、ブレークポイント データを明示的にまたは等間隔のブレークポイントとして指定します。

  • [ブレークポイントの指定][明示的な値] に設定した場合は、各 [ブレークポイント] 行でテーブル データの各次元に対応するブレークポイントの設定を入力します。各次元に対して、厳密に単調増加する値をもつ 1 行 n 列または n 行 1 列のベクトルとしてブレークポイントを指定します。

  • [ブレークポイントの指定][等間隔] に設定した場合は、各 [ブレークポイント] 行で [最初の点] および [間隔] パラメーターを入力し、それぞれの次元で等間隔のブレークポイントを生成します。テーブル データによって、等間隔の点の数が決まります。

依存関係

このパラメーターを有効にするには、[データの仕様][テーブルとブレークポイント] に設定します。

プログラムでの使用

ブロック パラメーター: BreakpointsForDimension1 | BreakpointsForDimension2
型: 文字ベクトル
値: 単調増加する値の 1 行 n 列、または n 行 1 列のベクトル
既定の設定: '[10, 22, 31]'

等間隔のブレークポイント データの最初の点を、実数値で有限のスカラーとして指定します。このパラメーターは、[ブレークポイントの指定][等間隔] に設定した場合に使用できます。

依存関係

このパラメーターを有効にするには、[データの仕様][テーブルとブレークポイント] に、および [ブレークポイントの指定][等間隔] に設定します。

プログラムでの使用

ブロック パラメーター: BreakpointsForDimension1FirstPoint | BreakpointsForDimensionSecondPoint
型: 文字ベクトル
値: 実数値、有限、スカラー
既定の設定: '1'

等間隔ブレークポイント データのポイントの間隔を指定します。

依存関係

このパラメーターを有効にするには、[データの仕様][テーブルとブレークポイント] に、および [ブレークポイントの指定][等間隔] に設定します。

プログラムでの使用

ブロック パラメーター: BreakpointsForDimension1Spacing | BreakpointsForDimension2Spacing
型: 文字ベクトル
値: 正、実数値、有限、スカラー
既定の設定: '1'

ルックアップ テーブル エディターを開くには、このボタンをクリックします。その後、オブジェクトを編集してオブジェクトの新しい値を保存できます。詳細については、Simulink ® ドキュメンテーションのEdit Lookup Tablesを参照してください。

アルゴリズム

[Evenly spaced points]、[Linear search]、または [Binary search] を選択します。各検索法は、さまざまな環境で速度の利点をもっています。

  • ブレークポイント セットが均等の間隔に並んでいる場合 (例: 10, 20, 30 など)、[Evenly spaced points] を選択してテーブル インデックスを計算することにより、速度を最大に上げることができます。このアルゴリズムは最初の 2つのブレークポイントのみを利用して残りのポイントのオフセットと間隔を求めます。

    メモ

    Simulink.LookupTable オブジェクトを使用してテーブル データを指定する際、参照先の Simulink.LookupTable オブジェクトの [ブレークポイントの指定] パラメーターが [等間隔] に設定されている場合は、[インデックス検索法][等間隔のポイント] に設定します。

  • 不規則な間隔に並んでいるブレークポイント セットについては、以下のガイドラインに従ってください。

    • あるタイム ステップから次のタイム ステップまでに入力信号が大きく変化しない場合は、[前回のインデックス結果を使ってインデックス検索を始める] と組み合わせて [Linear search] を選択すると、最高のパフォーマンスが得られます。

    • 入力信号がタイム ステップあたり 2 個以上または 3 個以上のテーブル区間をジャンプする場合は、[Binary search] を選択すると、最高のパフォーマンスが得られます。

インデックス検索法の選択が準最適であると、ルックアップ テーブルに大きく依存しているモデル内でパフォーマンスの低下をもたらします。

生成コードは、以下の場合、最初のブレークポイント、間隔、およびブレークポイントの数だけを保存します。

  • ブレークポイント データが調整不可能な場合。

  • インデックス検索法が [Evenly spaced points] の場合。

プログラムでの使用

ブロック パラメーター: IndexSearchMethod
型: 文字ベクトル
値: 'Binary search' | 'Evenly spaced points' | 'Linear search'
既定の設定: 'Linear search'

このチェック ボックスは、前のタイム ステップで発見されたインデックスを使ってこのブロックにそのブロックの探索を開始させたいときに選択します。区間サイズに関してゆっくりと変化する入力に対して、このオプションをオンにするとパフォーマンスを改善できます。そうでない場合、線形探索法と二分探索法は非常に長い時間を要します。特に、ブレークポイントセットが大きな場合には長い時間を要します。

依存関係

このパラメーターを有効にするには、[インデックス検索法][線形探索] または [二分探索] に設定します。

プログラムでの使用

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

入力がブレークポイント値の間にある場合、ブロックは隣接するブレークポイントを使って出力値を内挿します。詳細については、内挿法を参照してください。

プログラムでの使用

ブロック パラメーター: InterpMethod
型: 文字ベクトル
値: 'Linear point-slope' | 'Flat'
既定の設定: 'Linear point-slope'

モデルから生成されたコードのシミュレーションや実行において固定小数点または浮動小数点のルックアップ テーブルの計算で使用する丸めモードを指定します。

このオプションは、ブロック パラメーターの値の丸めには影響しません。Simulink は、そのような値を最も近い表記可能な整数値に丸めます。ブロックパラメーターの丸めを制御するためには、MATLAB™ 丸め関数を使用する式を、ブロックのダイアログ ボックスの編集フィールドに入力します。

プログラムでの使用

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

データ型

テーブル データ型を指定します。選択した型がターゲットのルーチンの指定と互換性があるかどうかがブロックで検証されます。テーブルのデータ型は次のように設定できます。

  • データ型継承ルール (例: 継承: 出力と同じ])

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

  • データ型オブジェクト名 (例: Simulink.NumericType オブジェクト)

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

[データ型アシスタントを表示] ボタン をクリックして、データ型の属性の設定に役立つ [データ型アシスタント] を表示します。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

ヒント

以下の場合には、出力データ型とは異なるテーブル データ型を指定します。

  • 出力信号よりも小さい型を使用するテーブル データの保存のためのメモリ必要量が少ない場合

  • 異なる出力データ型の 2 つの Map ブロック間で事前スケーリングされたテーブル データを共有する場合

  • 異なる出力データ型のブロックに対して生成されたコード内のカスタム ストレージ テーブル データを共有する場合

プログラムでの使用

ブロック パラメーター: TableDataTypeStr
型: 文字ベクトル
値: 'Inherit: Inherit from 'Table data'' | 'Inherit: Same as output' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'|'<data type expression>'
既定の設定: 'Inherit: Same as output'

ブレークポイント データのセットのデータ型を指定します。ブレークポイントのデータ型は次のように設定できます。

  • データ型継承ルール (例: 継承: 対応する入力と同じ])

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

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

  • データ型オブジェクト名 (例: Simulink.NumericType オブジェクト)

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

このブロックでの列挙型データの使用には制限があり、列挙型データの範囲外入力はサポートされません。列挙型データを指定する場合、ブレークポイント データセットに列挙全体を含めるようにします。

[データ型アシスタントを表示] ボタン をクリックして、データ型の属性の設定に役立つ [データ型アシスタント] を表示します。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

プログラムでの使用

ブロック パラメーター: BreakpointsForDimension1DataTypeStr | BreakpointsForDimension2DataTypeStr
型: 文字ベクトル
値: 'Inherit: Same as corresponding input' | 'Inherit: Inherit from 'Breakpoint data'' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'|'<data type expression>'
既定の設定: 'Inherit: Same as corresponding input'

拡張機能

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

バージョン履歴

R2019a で導入