Prelookup ブロックと Interpolation ブロックの使用
この例では、Prelookup ブロックと Interpolation Using Prelookup ブロックの使用方法を示します。
はじめに
Prelookup ブロックは、Interpolation Using Prelookup ブロックが内挿に使用するインデックスと区間の小数部を計算します。これらのブロックを組み合わせて使用することで、n-D Lookup Table ブロックと同じ処理になります。この例では以下について説明します。
n-D Lookup Table ブロックを単独で使用する場合よりも、個別の Prelookup ブロックと Interpolation ブロックを使用した方が柔軟性が高まり、シミュレーションやコード生成の効率が向上する可能性があるケースの一部。
Prelookup ブロックでサブテーブルを選択する方法。
Prelookup ブロックと Interpolation Using Prelookup ブロックの間で整合性のあるブレークポイントとテーブルを実行する方法。
Prelookup ブロックと Interpolation Using Prelookup ブロックが連携して機能するモデル
事前ルックアップを繰り返し行わずにルックアップ アルゴリズムを実行するために Prelookup ブロックと Interpolation Using Prelookup ブロックがどのように連携して機能するかを確認するには、モデル sldemoPrelookupInterpolation.slx
を開きます。
open_system("sldemoPrelookupInterpolation.slx")
Prelookup ブロックは計算のインデックス検索部分を実行します。
Interpolation Using Prelookup ブロックは計算の残りの部分を実行します。
効率的なシミュレーション
このモデルでは、2 つのインデックス検索の結果が 4 つのブロックで合計 7 回使用されます。n-D Lookup Table ブロックを使用した同等の実装では、必要なインデックス検索が 2 回ではなく 7 回になります。この設定では、インデックス検索と分数計算の結果を別の内挿に再利用して実行時のパフォーマンスを高めることで、ルックアップ テーブルのセット全体で実行されるインデックス検索の回数を最小限にしています。
柔軟性の向上
Prelookup ブロックと Interpolation Using Prelookup ブロックを組み合わせて使用すると柔軟性も向上します。さらなる最適化のために次元ごとにブレークポイントを当てはめるインデックス検索法が使用されるためです。たとえば、sldemoPrelookupInterpolation.slx
モデルには 2 つの Prelookup ブロックがあり、それぞれ別のインデックス検索法向けに構成されています。
Prelookup 1 では、対応するブレークポイントがこの次元において等間隔である 1 つ目の入力
U1
のインデックス検索を実行するために、[インデックス検索法]、[等間隔のポイント] オプションを使用しています。Prelookup 2 では、対応するブレークポイントが等間隔でない 2 つ目の入力
U2
のインデックス検索を実行するために、[インデックス検索法]、[二分探索] オプションを使用しています。
これに比べて、n-D Lookup Table ブロックは、すべての入力に対して 1 つのインデックス検索法を使用するようにしか構成できません。
サブテーブル選択のモデル
Interpolation Using Prelookup ブロックでサブテーブルを選択するには、n 次元のテーブルの後続次元を "選択次元" としてマークできるようにしてブロックを構成できます。つまり、その次元の入力は、サブテーブルを選択する (たとえば、3 次元のテーブルから 2 次元の平面を選択するなど) ためにのみ使用される整数ということです。その後、サブテーブルは通常の方法で内挿されます。
sldemoSubtableSelection.slx
モデルを開き、Interpolation using Prelookup ブロックのサブテーブル選択機能を使ってテーブル データのサブセットへの内挿がどのようにモデル化されているかを見てみます。
open_system("sldemoSubtableSelection.slx")
Interpolation using Prelookup ブロックでは、テーブルの値を構成するために、それぞれが特定のシナリオ向けに設計された 3 つの 2 次元テーブルを階層化しています。シナリオに対応する 2 次元テーブルが入力 "Subtable Selection" によって選択され、その後に Interpolation ブロックによって 2 次元内挿が実行されます。
この内挿モードをアクティブにするには、Interpolation ブロックの [サブテーブル選択次元数] パラメーターを正の整数に設定します。指定した値は、テーブル データの最高次元から選択する次元数として解釈されます。選択次元の選択の詳細については、Interpolation Using Prelookupを参照してください。
ブレークポイント データとテーブル データの整合性のチェック
ブレークポイント データとテーブル データの整合性をチェックするには、Prelookup ブロックの [ブレークポイント データ] の長さが、接続されている Interpolation Using Prelookup ブロックの [テーブル データ] の対応する次元と一致していることを確認します。Simulink® は、ブロック線図の更新時には、必ずこの 2 つのブロック間の整合性をチェックします。ブレークポイントとテーブル データの間に不整合がある場合、モデルでエラーが返されます。
参考
n-D Lookup Table | Prelookup | Interpolation Using Prelookup