Map
2 次元関数を近似
ライブラリ:
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 ライブラリ ルーチンに置き換えられます。
端子
入力
u1 — 1 番目の次元の入力値
スカラー | ベクトル | 行列
1 番目の端子への実数値入力。定義される値のテーブルのルックアップまたは内挿により出力値にマッピングされます。
例: 0:10
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
u2 — 2 番目の次元の入力値
スカラー | ベクトル | 行列
2 番目の端子への実数値入力。定義される値のテーブルのルックアップまたは内挿により出力値にマッピングされます。
例: 0:10
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
出力
y — テーブル値をルックアップまたは推定して計算される出力
スカラー | ベクトル | 行列
入力値に基づいてテーブル値をルックアップまたは推定することで生成された出力。入力がブレークポイント セットのインデックス値と一致する場合、Map ブロックの出力はテーブル値になります。ブロック入力がブレークポイント セットのインデックス値と一致しないが範囲内の場合は、設定された内挿法に基づいてテーブル値から推定された値が出力として返されます。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
パラメーター
ターゲットとなるルーチン ライブラリ — ブロックのコード置換に使用される AUTOSAR ルーチン ライブラリ
IFX (固定小数点) (既定値) | IFL (浮動小数点)
モデルに対して AUTOSAR 4.0 コード置換ライブラリ (CRL) を選択した場合は、このブロックから生成されるコードが、選択した AUTOSAR ルーチン ライブラリから置き換えられます。このパラメーターで、コード置換と検証チェックに固定小数点 (IFX) と浮動小数点 (IFL) のどちらを使用するかを選択できます。
ターゲットとなるルーチン — コード置換に使用される AUTOSAR ライブラリ ルーチン
Ifx_IntIpoMap
(既定値)
このパラメーターは、このブロックで生成されるコードの置き換えに使用される AUTOSAR コード置換ライブラリ (CRL) ルーチンの名前を反映した値になります。命名規則に従って、ターゲットのルーチン ライブラリ、内挿法、およびブロック タイプを組み合わせた名前が付けられます。このパラメーターは参照のみを目的としており、編集することはできません。
テーブルの指定
データ仕様 — テーブルとブレークポイントの指定の方法
テーブルとブレークポイント
(既定値) | ルックアップ テーブル オブジェクト
リストから以下を選択します。
テーブルとブレークポイント
— テーブル データとブレークポイントを指定します。これらのオプションを選択すると、次のパラメーターが有効になります。テーブル データ
ブレークポイントの指定
ブレークポイント 1
ブレークポイント 2
テーブルとブレークポイントの編集
ルックアップ テーブル オブジェクト
— 既存のルックアップ テーブル (Simulink.LookupTable
) オブジェクトを使用します。このオプションを選択すると、[名前] フィールドおよび [テーブルとブレークポイントの編集] ボタンが有効になります。
プログラムでの使用
ブロック パラメーター: DataSpecification |
型: 文字ベクトル |
値: 'Table and breakpoints' | 'Lookup table object' |
既定の設定: 'Table and breakpoints' |
名前 — ルックアップ テーブル オブジェクトの名前
[]
(既定値) | Simulink.LookupTable
オブジェクト
ルックアップ テーブル (Simulink.LookupTable
) オブジェクトの名前を入力します。
依存関係
このパラメーターを有効にするには、[データの仕様] を [ルックアップ テーブル オブジェクト]
に設定します。
プログラムでの使用
ブロック パラメーター: LookupTableObject |
型: 文字ベクトル |
値: Simulink.LookupTable オブジェクトの名前 |
既定の設定: '' |
テーブル データ — 出力値のテーブルを定義
[4 5 6;16 19 20;10 18 23]
(既定値) | 文字ベクトル
出力値のテーブルを入力します。
シミュレーションの実行時は、行列サイズは 2 次元でなければなりません。ただし、ブロック線図の編集時には、空行列 ([]
として指定) または未定義のワークスペース変数を入力できます。この手法により、テーブル データに対する適切な次元の行列の指定は後回しにして、ブロック線図の編集を続けることができます。
依存関係
このパラメーターを有効にするには、[データの仕様] を [テーブルとブレークポイント]
に設定します。
プログラムでの使用
ブロック パラメーター: Table |
型: 文字ベクトル |
値: テーブルの値の行列 |
既定の設定: '[4 5 6;16 19 20;10 18 23]' |
ブレークポイントの指定 — ブレークポイントの指定の方法
明示的な値
(既定値) | 等間隔
明示的なブレークポイントまたは等間隔のブレークポイントを生成するパラメーターのどちらでデータを入力するか指定します。
ブレークポイント データを明示的に指定するには、このパラメーターを
[明示的な値]
に設定し、[ブレークポイント] パラメーターの横にあるテキスト ボックスにブレークポイント データを入力します。等間隔のブレークポイントを生成するパラメーターを指定するには、このパラメーターを
[等間隔]
に設定し、ブレークポイント データの次元ごとに [最初の点] パラメーターと [間隔] パラメーターに値を入力します。ブロックは、テーブル データから生成される点の数を計算します。
依存関係
このパラメーターを有効にするには、[データの仕様] を [テーブルとブレークポイント]
に設定します。
プログラムでの使用
ブロック パラメーター: BreakpointsSpecification |
型: 文字ベクトル |
値: 'Explicit values' | 'Even spacing' |
既定の設定: 'Explicit values' |
ブレークポイント — 明示的なブレークポイントの値、またはブレークポイントの最初の点と間隔
[10,22,31]
(既定値) | 単調増加する値の 1 行 n 列、または n 行 1 列のベクトル
[ブレークポイントの指定] パラメーターの値に基づいて、ブレークポイント データを明示的にまたは等間隔のブレークポイントとして指定します。
[ブレークポイントの指定] を
[明示的な値]
に設定した場合は、各 [ブレークポイント] 行でテーブル データの各次元に対応するブレークポイントの設定を入力します。各次元に対して、厳密に単調増加する値をもつ 1 行 n 列または n 行 1 列のベクトルとしてブレークポイントを指定します。[ブレークポイントの指定] を
[等間隔]
に設定した場合は、各 [ブレークポイント] 行で [最初の点] および [間隔] パラメーターを入力し、それぞれの次元で等間隔のブレークポイントを生成します。テーブル データによって、等間隔の点の数が決まります。
依存関係
このパラメーターを有効にするには、[データの仕様] を [テーブルとブレークポイント]
に設定します。
プログラムでの使用
ブロック パラメーター: BreakpointsForDimension1 | BreakpointsForDimension2 |
型: 文字ベクトル |
値: 単調増加する値の 1 行 n 列、または n 行 1 列のベクトル |
既定の設定: '[10, 22, 31]' |
最初の点 — 等間隔のブレークポイント データの最初の点
1
(既定値) | スカラー
等間隔のブレークポイント データの最初の点を、実数値で有限のスカラーとして指定します。このパラメーターは、[ブレークポイントの指定] を [等間隔]
に設定した場合に使用できます。
依存関係
このパラメーターを有効にするには、[データの仕様] を [テーブルとブレークポイント]
に、および [ブレークポイントの指定] を [等間隔]
に設定します。
プログラムでの使用
ブロック パラメーター: BreakpointsForDimension1FirstPoint | BreakpointsForDimensionSecondPoint |
型: 文字ベクトル |
値: 実数値、有限、スカラー |
既定の設定: '1' |
間隔 — 等間隔のブレークポイント間の間隔
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' |
前回のインデックス結果を使ってインデックス検索を始める — 前のタイム ステップからインデックスの使用を開始
off
(既定値) | on
このチェック ボックスは、前のタイム ステップで発見されたインデックスを使ってこのブロックにそのブロックの探索を開始させたいときに選択します。区間サイズに関してゆっくりと変化する入力に対して、このオプションをオンにするとパフォーマンスを改善できます。そうでない場合、線形探索法と二分探索法は非常に長い時間を要します。特に、ブレークポイントセットが大きな場合には長い時間を要します。
依存関係
このパラメーターを有効にするには、[インデックス検索法] を [線形探索]
または [二分探索]
に設定します。
プログラムでの使用
ブロック パラメーター: BeginIndexSearchUsing PreviousIndexResult |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
内挿法 — ブレークポイント値間の内挿の方法
線形の点と勾配
(既定値) | フラット
入力がブレークポイント値の間にある場合、ブロックは隣接するブレークポイントを使って出力値を内挿します。詳細については、内挿法を参照してください。
プログラムでの使用
ブロック パラメーター: InterpMethod |
型: 文字ベクトル |
値: 'Linear point-slope' | 'Flat' |
既定の設定: 'Linear point-slope' |
整数丸めモード — 固定小数点演算の丸めモード
最も近い整数方向
(既定値) | ゼロ方向
モデルから生成されたコードのシミュレーションや実行において固定小数点または浮動小数点のルックアップ テーブルの計算で使用する丸めモードを指定します。
このオプションは、ブロック パラメーターの値の丸めには影響しません。Simulink は、そのような値を最も近い表記可能な整数値に丸めます。ブロックパラメーターの丸めを制御するためには、MATLAB™ 丸め関数を使用する式を、ブロックのダイアログ ボックスの編集フィールドに入力します。
プログラムでの使用
ブロック パラメーター: RndMeth |
型: 文字ベクトル |
値: 'Round' | 'Zero' |
既定の設定: 'Round' |
データ型
テーブル データ — テーブル データのデータ型
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>
テーブル データ型を指定します。選択した型がターゲットのルーチンの指定と互換性があるかどうかがブロックで検証されます。テーブルのデータ型は次のように設定できます。
データ型継承ルール (例:
継承: 出力と同じ]
)組み込みデータ型名 (例:
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' |
ブレークポイント — ブレークポイント データ型
Inherit: Same as corresponding input
(既定値) | double
| single
| int8
| uint8
| int16
| uint16
| int32
| uint32
| 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)
)
このブロックでの列挙型データの使用には制限があり、列挙型データの範囲外入力はサポートされません。列挙型データを指定する場合、ブレークポイント データセットに列挙全体を含めるようにします。
[データ型アシスタントを表示] ボタン をクリックして、データ型の属性の設定に役立つ [データ型アシスタント] を表示します。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。
プログラムでの使用
ブロック パラメーター: 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 で導入
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)