ドキュメンテーション

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

Interpolation Using Prelookup

あらかじめ計算されたインデックスと小数部の値を使用して、n 次元関数の近似を加速する

ライブラリ

Lookup Tables

説明

Prelookup ブロックとの連動

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

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

Interpolation Using Prelookup ブロックを使用するには、ダイアログ ボックス上で一連のテーブル データ値を直接指定するか、T 入力端子に値を入力します。通常は、これらの表の値は Prelookup ブロックで指定されたブレーク ポイント データセットに相当します。Interpolation Using Prelookup ブロックは、Prelookup ブロックから取得するインデックスおよび区間分割の値に基づき表の値を検索または推定し、出力を生成します。インデックスと区間分割のラベルは、Interpolation Using Prelookup ブロック アイコンでは k および f として表示されます。

インデックスおよび区間分割の入力Interpolation Using Prelookup ブロック
ブレークポイント データセットのインデックスの値にマッピングされる場合行と列、および高次元のブレークポイントの交差部の表の値を出力します。
ブレークポイント データセットのインデックスの値にはマッピングされないが範囲内の場合選択した [内挿法] を使用して適切な表の値を内挿します。
ブレークポイント データセットのインデックスの値にはマッピングされず範囲外の場合選択した [外挿方法] を使用して出力値を外挿します。

テーブル データのサブセットの内挿法

[サブテーブル選択次元数] パラメーターを使用すると、そのテーブル データのサブセットにおいてのみ内挿されるように指定できます。この内挿モードをアクティブにするには、このパラメーターを正の整数に設定します。この値によって、テーブル データの最高次元から始めて、選択する次元数が定義されます。したがって、値は テーブルの次元数 以下でなければなりません。

Interpolation Using Prelookup ブロックに 3 次元のテーブル データがあるとします。次の動作が適用されます。

選択次元数ブロックの動作ブロックの外観
0テーブル全体を内挿し、サブテーブル選択をアクティブにしません。変更されません。
1最初の 2 つの次元を内挿し、3 番目の次元を選択します。2 次元テーブルの選択と内挿に使用するラベル sel1 の付いた入力端子を表示します。
2最初の次元を内挿し、2 番目と 3 番目の次元を選択します。1 次元テーブルの選択と内挿に使用するラベル sel1sel2 の付いた入力端子を表示します。

サブテーブル選択では、0 ベースのインデックス指定を使用します。テーブル データのサブセットの内挿の例として、MATLAB® のコマンド プロンプトで「sldemo_bpcheck」と入力します。

サポートするデータ型

Interpolation Using Prelookup ブロックは、Simulink でサポートされる Boolean を除く数値データ型の実数信号を受け入れます。Interpolation Using Prelookup ブロックは、信号、テーブル データ、および中間結果に固定小数点データ型をサポートします。

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

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

[メイン] タブ

テーブルの次元数

テーブル データがもたなければならない次元の数を指定します。この値によって、テーブルの独立変数の数が決まります。このフィールドには、1 から 30 までの整数を入力してください。

テーブル データ

値を直接ダイアログ ボックスに入力するか、入力端子から値を継承するかどうかを指定します。

  • [ソース][ダイアログ] に設定する場合、[値] の下にある編集フィールドにテーブル データを入力します。テーブル データのサイズは テーブルの次元数 の値に一致していなければなりません。このオプションでは、[データ型] ペインでテーブル属性を指定します。

  • [ソース][入力端子] に設定する場合、上流信号がテーブル データを T 入力端子に提供することを確認します。テーブル データのサイズは テーブルの次元数 の値に一致していなければなりません。このオプションの場合、ブロックは T 入力端子からテーブルの属性を継承します。

ブロック線図の編集中、空行列 ([] として指定) または未定義のワークスペース変数を [値] の下の編集フィールドに入力できます。この手法により、テーブル データ パラメーターに対する適切な次元の行列の指定は後回しにして、ブロック線図の編集を続けることができます。MATLAB で多次元配列を作成する方法の詳細は、MATLAB ドキュメンテーションの「多次元配列」を参照してください。

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

内挿法

[フラット][最も近い正の整数方向] または [線形] を選択します。詳細は、Simulink ドキュメンテーションの「内挿法」を参照してください。

外挿方法

[クリップ] または [線形] を選択します。詳細は、Simulink ドキュメンテーションの「外挿方法」を参照してください。[内挿法] パラメーターとして、[線形] を選ぶときに限り、[外挿方法] パラメーターが表示されます。

Interpolation Using Prelookup ブロックは、その入力または出力信号が整数または固定小数点データ型を指定するとき、[線形] 外挿をサポートしません。

インデックスの入力を最後のインデックスに達するようにする

インデックス (k) および区間分割 (f) のブロック入力が、n 次元のテーブル データの最後の要素にアクセスする方法を指定します。インデックス値は 0 から始まります。

チェック ボックスブロックの動作

選択

次の場合に次元の最後の要素の値を返します。

  • k は、対応する次元の最後のテーブル要素にインデックスを付けます。

  • f は次のようになります。 0

クリア

次の場合に次元の最後の要素の値を返します。

  • k は、対応する次元の最後から 2 番目のテーブル要素にインデックスを付けます。

  • f は次のようになります。 1

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

  • [内挿法][線形] の場合。

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

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

範囲外入力の診断

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

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

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

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

生成コードの範囲外インデックスに対する保護を削除

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

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

選択

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

コード効率の場合

クリア

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

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

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

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

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

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

以下のいずれかが True である場合、このチェック ボックスは生成コードに影響しません。

  • Prelookup ブロックが Interpolation Using Prelookup ブロックにインデックス値を送り込む場合。

    Prelookup ブロックのインデックス値は常に有効なので、チェック コードは必要ありません。

  • 入力 k のデータ型により、データが有効なインデックス値に制限される場合。

    たとえば、符号なしの整数データ型では、非負のインデックス値が保証されます。したがって、k が符号なしの入力の場合、負値のチェック コードは必要ありません。

サブテーブル選択次元数

このブロックで出力の計算に使用するサブテーブルの次元数を指定します。以下のルールに従います。

  • サブテーブル選択を有効にするには、正の整数を入力します。

    この整数は テーブルの次元数 以下でなければなりません。

  • サブテーブル選択を無効にするには、0 を入力して、テーブル全体を内挿します。

詳細は、テーブル データのサブセットの内挿法を参照してください。

サンプル時間

[データ型] タブ

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

テーブル データ > データ型

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

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

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

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

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

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

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

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

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

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

テーブル データ > 最小値

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

テーブル データ > 最大値

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

中間結果 > データ型

中間結果のデータ型を指定します。以下を指定可能です。

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

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

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

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

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

    ヒント:   このパラメーターを使用して、内部計算に対してテーブル データや出力データよりも高い精度を指定します。

出力 > データ型

出力データ型を指定します。以下を指定可能です。

  • データ型継承ルール (例: 継承: 逆伝播による継承)

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

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

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

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

詳細は、「信号のデータ型の制御」を参照してください。

出力 > 最小値

ブロックが出力する最小値を指定します。既定値は [] (指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。

出力 > 最大値

ブロックが出力する最大値を指定します。既定値は [] (指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。

内部ルール優先順位

中間計算の内部ルールを指定します。より速く計算するには [速度] を選択します。この場合、通常で最大 2 ビットの精度が失われる場合があります。

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

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックのすべてのデータ型の設定をロックします。詳細は、Fixed-Point Designer™ ドキュメンテーションの「出力データ型設定のロック」を参照してください。

整数丸めモード

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

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

整数オーバーフローで飽和
アクションこのアクションを行う理由オーバーフロー発生時に起きること

このチェック ボックスをオンにする。

モデルでオーバーフローが発生する可能性があるので、生成コードに飽和保護を明示的に組み込むことをお勧めします。

オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。

int8 (符号付き、8 ビット整数) データ型が表すことができる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。チェック ボックスがオンになっていると、ブロック出力は 127 で飽和します。同様に、ブロック出力は最小出力値である -128 で飽和します。

このチェック ボックスをオンにしない。

生成コードの効率を最適化することをお勧めします。

ブロックが範囲外の信号を処理する方法を指定しすぎないようにすることをお勧めします。詳細は、「信号範囲のエラーのチェック」を参照してください。

オーバーフローは、データ型によって表現される適切な値にラップされます。

int8 (符号付き、8 ビット整数) データ型が表すことができる最大値は 127 です。この最大値を超えるブロックの演算結果により 8 ビット整数のオーバーフローが発生します。チェック ボックスをオフにすると、オーバーフローを引き起こした値は int8 として解釈され、意図しない結果が引き起こされる可能性があります。たとえば、int8 として表されるブロック結果 130 (バイナリで 1000 0010) は -126 です。

このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

次の モデルでは、Constant ブロックによって、テーブル データ値が Interpolation Using Prelookup ブロックの T 入力端子に送られます。

Interpolation Using Prelookup ブロックは T 入力端子から次のテーブル属性を継承します。

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

同様に、Constant ブロックによって、ブレークポイント データセットが Prelookup ブロックの bp 入力端子に送られます。このとき、次のブレークポイント属性が継承されます。

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

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

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

特性

データ型

double | single | 整数 | 固定小数点

サンプル時間

駆動ブロックから継承

直接フィードスルー

あり

多次元信号

あり

可変サイズの信号

なし

ゼロクロッシング検出

なし

コード生成

あり

参考

Prelookup

R2006b で導入

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