ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Prelookup

Interpolation Using Prelookup ブロックのためのインデックスと分割を計算

ライブラリ

Lookup Tables

説明

Prelookup ブロックを使用したこのブロックの内挿法

Prelookup ブロックは、Interpolation Using Prelookup ブロックと併用するのが最も効果的です。PreLookup ブロックは、その入力値 u がブレークポイント データセットとどのように関連するかを指定するインデックスと区間分割を計算します。n 次元テーブルを内挿するために、結果のインデックスと割合の値を Interpolation Using Prelookup ブロックに入力します。これらの 2 つのブロックには分散アルゴリズムがあります。それらを組み合わせることで、n-D Lookup Table ブロックの統合アルゴリズムと同じ処理になります。ただし、Prelookup ブロックと Interpolation Using Prelookup ブロックを使用すると、シミュレーションとコード生成の効率を上げることができる場合があります。詳細は、『Simulink ユーザー ガイド』の「処理効率」を参照してください。

サポートされているブロック演算

Prelookup ブロックを使用するには、ダイアログ ボックス上で一連のブレークポイント値を指定するか、bp 入力端子に値を入力します。通常の使用では、このブレークポイント データセットは、Interpolation Using Prelookup ブロックのテーブル データの 1 次元に対応します。Prelookup ブロックは、以下を計算することにより各入力値 u ごとに一組の出力を生成します。

  • u に等しいか、その値よりも小さいブレークポイント セット要素のインデックスで、u を含む区間を作成します。

  • 範囲 0 ≤ f < 1 の区間部分。これは、範囲内入力に対するインデックスとそれに隣接するインデックス値との間にあるブレークポイント区間上にある u の正規化された位置を表します。

たとえば、ブレークポイント データが [ 0 5 10 20 50 100 ] に設定され、入力値 u が 55 である場合、インデックスは 4 であり、小数部の値は 0.1 です。インデックスと区間分割のラベルは、Prelookup ブロック アイコンでは k および f として表示されます。インデックス値は、ゼロを起点としたものです。

区間分割は、範囲外入力に対して負または 1 より大きい数値になります。詳細は、[外挿法] ブロック パラメーターのドキュメンテーションを参照してください。

サポートするデータ型

Prelookup ブロックは、Simulink® がサポートする Boolean を除く数値データ型の実数信号を受け入れます。Prelookup ブロックは、信号およびブレークポイント データの固定小数点データ型をサポートします。

詳細は、Simulink ドキュメンテーションの「 Simulink でサポートされているデータ型」を参照してください。

パラメーターとダイアログ ボックス

[メイン] タブ

ブレークポイント データ

ダイアログ ボックスにブレークポイント データを直接入力するか、入力端子からデータを継承するかどうかを指定します。

  • [ソース][ダイアログ] に設定する場合、[値] の下にある編集フィールドにブレークポイント データを入力します。各ブレークポイント データセットは、2 つ以上の要素を含み、厳密に単調増加するベクトルでなければなりません。このオプションでは、[データ型] ペインでブレークポイント属性を指定します。

  • [ソース][入力端子] に設定する場合、上流信号がブレークポイント データを bp 入力端子に提供することを確認します。各ブレークポイント データセットは、2 つ以上の要素を含み、厳密に単調増加するベクトルでなければなりません。このオプションの場合、ブロックは bp 入力端子からブレークポイントの属性を継承します。

[編集] ボタンをクリックしてルックアップ テーブル エディターを開きます。Simulink ドキュメンテーションの「ルックアップ テーブルの編集」を参照してください。

インデックス検索法

[等間隔のポイント][線形探索]、または [二分探索] を選択します。各検索法は、さまざまな状況で速度の利点をもっています。

  • ブレークポイント セットが均等の間隔に並んでいる場合 (例: 10, 20, 30, ...)、[等間隔のポイント] を選択してテーブル インデックスを計算することにより、速度を最大に上げることができます。

    このアルゴリズムは最初の 2つのブレークポイントのみを利用して残りのポイントのオフセットと間隔を求めます。

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

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

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

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

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

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

    • インデックス検索法は [等間隔のポイント] です。

前回のインデックス結果を使ってインデックス検索を始める

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

インデックスのみ出力

このチェック ボックスは、区間分割なしで、ブロックで結果のインデックス値のみを出力したいときにオンにします。

代表的な適用例としては、次のようなものがあります。

外挿方法

ブロック入力 u の範囲外入力値の取り扱い方を指定します。オプションは次のとおりです。

  • [クリップ]

    ブロック入力ブロック出力

    最初のブレークポイントより小さい場合

    • 最初のブレークポイントのインデックス (0 など)

    • 区間分割 0

    最初のブレークポイントより大きい場合

    • 最後から 2 つ目のブレークポイントのインデックス

    • 区間分割 1

    たとえば、範囲が [1 2 3] に等しいときにこのオプションを選択したと仮定します。u0.5 の場合、インデックスは 0 であり、区間分割は 0 です。u3.5 の場合、インデックスは 1 であり、区間分割は 1 です。

  • 線形

    ブロック入力 ブロック出力

    最初のブレークポイントより小さい場合

    • 最初のブレークポイントのインデックス (0 など)

    • u から最初のブレークポイントまでの線形距離を表す区間分割

    最初のブレークポイントより大きい場合

    • 最後から 2 つ目のブレークポイントのインデックス

    • 最後のブレークポイントに隣接するブレークポイントから u までの線形距離を表す区間分割

    たとえば、範囲が [1 2 3] に等しいときにこのオプションを選択したと仮定します。u0.5 の場合、インデックスは 0 であり、区間分割は -0.5 です。u3.5 の場合、インデックスは 1 であり、区間分割は 1.5 です。

    ヒント:   Prelookup ブロックは、以下の条件すべてが当てはまる場合に限り、線形外挿をサポートします。

    • 入力 u、ブレークポイント データ、小数部の出力が浮動小数点データ型を使用する。

    • インデックスが組み込みの整数データ型を使用する。

上限またはそれを越える入力に対して最後のブレークポイントを使用する

最後のブレークポイント以上の入力値 u に、インデックスを付ける方法を指定します。インデックス値は、ゼロを起点としたものです。入力が最後のブレークポイントと同じである場合、ブロック出力は次のように異なります。

チェック ボックスブロック出力

選択

  • ブレークポイント データセットの最後の要素のインデックス

  • 区間分割 0

クリア

  • 最後から 2 つ目のブレークポイントのインデックス

  • 区間分割 1

このチェック ボックスは、以下の場合にのみ表示されます。

  • [インデックスのみ出力] がオフの場合

  • [外挿方法][クリップ] の場合。

ただし、[インデックスのみ出力] が選択され、[外挿方法][クリップ] である場合、このブロックは、このチェック ボックスが非表示であっても有効であるかのように動作します。

    ヒント:   Prelookup ブロックの [上限またはそれを越える入力に対して最後のブレークポイントを使用する] を選択すると、これに接続されている Interpolation Using Prelookup ブロックの [インデックスの入力を最後のインデックスに達するようにする] も選択しなければなりません。これにより、ブロックはブレークポイントとテーブル データのセットの最後の要素にアクセスするとき、同じインデックス付けの規則を使用できます。

[範囲外入力の診断]

入力 u が範囲外の場合に警告メッセージを表示するかエラーを表示するかを指定します。オプションは次のとおりです。

  • [なし] — 警告またはエラーなし

  • [警告] - MATLAB® コマンド ウィンドウに警告を表示し、シミュレーションを続けます。

  • エラー — シミュレーションを停止し、診断ビューアーにエラーを表示します。

生成コードの範囲外入力に対する保護を削除

範囲外のブレークポイント入力をチェックするコードを含むかどうかを指定します。

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

選択

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

コード効率の場合

クリア

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

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

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

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

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

モデル アドバイザーの詳細は、Simulink ドキュメンテーションの「モデル チェックの実行」を参照してください。

サンプル時間

サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1 に設定します。詳細は、『Simulink ユーザー ガイド』の「 サンプル時間の指定」を参照してください。

[データ型] タブ

    メモ:   ブレークポイント属性のパラメーター (データ型、最小値、最大値) は、[ソース][入力端子] に設定したときには利用できません。その場合、ブロックは bp 入力端子からすべてのブレークポイントの属性を継承します。

ブレークポイント > データ型

ブレークポイント データ型を指定します。以下を指定可能です。

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

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

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

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

[データ型アシスタントを表示] ボタン をクリックして、ブレークポイント データ型に関する設定を行う [データ型アシスタント] を表示します。

詳細は、「データ型アシスタントを利用したデータ型の指定」を参照してください。

    ヒント:   以下の場合に入力 u のデータ型と異なるブレークポイント データ型を指定します。

    • 入力信号 u よりも小さいタイプを使用するブレークポイント データの保存のためのメモリ必要量が少ない場合

    • 入力 u の異なるデータ型をもつ 2 つの Prelookup ブロック間で事前スケーリングされたブレークポイント データを共有する場合

    • 入力 u の異なるデータ型のブロックに対して生成コード内のカスタム ストレージ ブレークポイント データを共有する場合

ブレークポイント > 最小値

ブレークポイント データに使用できる最小値を指定します。既定値は [] (指定なし) です。

ブレークポイント > 最大値

ブレークポイント データに使用できる最大値を指定します。既定値は [] (指定なし) です。

インデックス > データ型

ブレークポイント データセットのすべての要素にインデックス付けできるデータ型を指定します。次のことが可能です。

  • リストから組み込みの整数データ型を選択します。

  • 固定小数点表現を使って整数データ型を指定します。

[データ型アシスタントを表示] ボタン をクリックして、インデックス データ型に関する設定を行う [データ型アシスタント] を表示します。

詳細は、「データ型アシスタントを利用したデータ型の指定」を参照してください。

ブレークポイント間の位置 > データ型

区間分割のデータ型を指定します。次のことが可能です。

  • リストから組み込みのデータ型を選択します。

  • 内部ルールからデータ型の継承を指定します。

  • スケーリングの表現として、「勾配とバイアス」、または「2 進小数点」のいずれかを使って、固定小数点データ型を指定します。

    • 「勾配とバイアス」 の表現を使用する場合、スケーリングが自明 (勾配は 1 で、バイアスは 0) でなければなりません。

    • 「2 進小数点」の表現を利用する場合、2 のべき乗の指数は 0 以下でなければなりません。

[データ型アシスタントを表示] ボタン をクリックして、[データ型アシスタント] を表示し、ブレークポイント間の位置のデータ型を設定します。

詳細は、「データ型アシスタントを利用したデータ型の指定」を参照してください。

固定小数点ツールによる変更に対して出力データ型の設定をロックする

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックの出力データ型の設定をロックします。詳細は、「[出力データ型の設定をロックする] の使用」を参照してください。

整数丸めモード

固定小数点演算の丸めモードを指定します。詳細は、Simulink Fixed Point™ ドキュメンテーションの「丸め」を参照してください。

ブロック パラメーターは常に最近傍の表現可能な値に丸められます。ブロックパラメーターの丸めを直接制御するには、MATLAB の丸め関数を使用する式をマスク フィールドに入力します。

次の モデルモデルでは、Constant ブロックによって、ブレークポイント データセットが Prelookup ブロックの bp 入力端子に送られます。

Prelookup ブロックは bp 入力端子から次のブレークポイント属性を継承します。

ブレークポイント属性
最小値Inf
最大値Inf
データ型[single]

同様に、Constant ブロックによって、テーブル データ値が Interpolation Using Prelookup ブロックの T 入力端子に送られます。このとき、次のテーブル属性が継承されます。

テーブル属性
最小値Inf
最大値Inf
データ型[single]

Simulink は、倍精度浮動小数点データを使用して、このモデルの計算を実行します。ただし、このモデルでは、ブレークポイントとテーブル データを単精度浮動小数点データとして保存します。低精度のデータ型を使用してブレークポイントとテーブル データを使用することで、メモリ必要量を低く抑えます。

他の例は、Simulink ドキュメンテーションの「Prelookup ブロックと Interpolation ブロック」を参照してください。

特性

直接フィードスルー

あり

サンプル時間

[サンプル時間] パラメーターで指定

スカラー拡張

あり

離散化

あり

ゼロクロッシング検出

なし

この情報は役に立ちましたか?