Main Content

ルックアップ テーブル オプティマイザー

既存のルックアップ テーブルの最適化とルックアップ テーブルによる関数の近似

説明

ルックアップ テーブル オプティマイザー アプリを使用して、最適化された (メモリ効率が高い) ルックアップ テーブルを取得できます。

このアプリを使用すると、次が可能です。

  • Subsystem ブロックや Math Function ブロックを含む既存の Simulink® ブロックの近似

  • MATLAB® ハンドルの近似

  • 曲線近似オブジェクトの近似

最適化されたルックアップ テーブルを Simulink ブロックまたは MATLAB 関数として返すように選択できます。

このオプティマイザーでは、浮動小数点と固定小数点のあらゆる組み合わせのデータ型をサポートしています。入力と出力の元のデータ型は必要に応じて保持することも変更することもできます。メモリの使用が最小限になるように、オプティマイザーでブレークポイントとテーブル データのデータ型、およびブレークポイントの数と間隔が選択されます。

Screenshot of Lookup Table Optimizer app

ルックアップ テーブル オプティマイザー アプリを開く

  • Simulink ツールストリップ: [アプリ] タブの [コード生成] の下で、アプリ アイコンをクリックします。

  • Lookup Table ブロックがある Simulink モデルで Lookup Table ブロックを選択します。[ルックアップ テーブル] タブで [ルックアップ テーブル オプティマイザー] を選択します。

パラメーター

すべて展開する

メモリ効率が高い LUT のソースを選択します。

  • Simulink ブロックまたはサブシステム — 近似する Simulink ブロックまたはサブシステム、または最適化する Lookup Table ブロック (1-D Lookup Tablen-D Lookup Table など)。いずれかの Lookup Table ブロックを指定した場合、アプリは最適化されたルックアップ テーブルを生成します。

  • MATLAB 関数ハンドル — ルックアップ テーブルで近似する MATLAB 関数ハンドル。関数ハンドルは MATLAB 検索パスにないと近似は失敗します。

  • 近似曲線 — ベース ワークスペースからの近似する曲線近似 cfit (Curve Fitting Toolbox) オブジェクト。近似するライブラリ モデルのリストについては、曲線近似または曲面近似のライブラリ モデルのリスト (Curve Fitting Toolbox)を参照してください。

ヒント

ルックアップ テーブルの近似の生成プロセスは、サブシステムよりも関数ハンドルの方が迅速です。サブシステムを関数ハンドルで表すことができる場合は、関数ハンドルを近似した方が迅速に処理できます。

元の出力値と近似の出力値の差の最大許容誤差を [絶対][相対] のそれぞれについて指定します。

使用するハードウェアに基づいてルックアップ テーブルの近似で使用できる語長をビット単位で指定します。たとえば、ターゲットが組み込みプロセッサであれば、ルックアップ テーブルのデータ型をネイティブ型に制限できます。語長は 1 と 128 の間でなければなりません。

最適化されたルックアップ テーブルに使用するオプションを指定します。

オプション説明
内挿

入力がブレークポイント値の間に来た場合、ルックアップ テーブルは隣接するブレークポイントを使って出力値を内挿します。

  • 線形 — 隣接するブレークポイント間で直線を近似させ、その直線上の入力に対応する点を返します。

  • フラット — 入力値のすぐ下のブレークポイント値に対応する出力値を返します。入力値の下にブレークポイント値がない場合、このオプションでは入力値に最も近いブレークポイント値が返されます。

  • 最近傍 — 入力に最も近いブレークポイントに対応する値を返します。入力が隣接する 2 つのブレークポイントから等間隔にある場合、このオプションではインデックスの大きいブレークポイントが選択されます。

  • なし — 内挿、外挿なしのテーブル ルックアップを実行する Direct Lookup Table (n-D) ブロックを生成します。

    メモ

    Direct Lookup Table ブロックを生成する場合、入力の最大数は 2 になります。

ブレークポイントの指定

ブレークポイント データの間隔。

  • ExplicitValues — ルックアップ テーブルのブレークポイントを明示的に指定します。入力範囲ごとにブレークポイントの間隔を小さくしたり大きくしたりできます。

  • EvenSpacing — ルックアップ テーブルのブレークポイントを全体に等間隔にします。

  • EvanPow2Spacing — ルックアップ テーブルのブレークポイントで 2 のべき乗の間隔を使用します。このブレークポイントの指定を使用すると、位置検索をビット シフトに置き換えることができるため実行速度が最速になります。

ブレークポイントの指定によるパフォーマンスへの影響の詳細については、速度、誤差、およびメモリの使用量に与える間隔の影響を参照してください。

出力タイプに飽和

関数の出力範囲を自動的に飽和して出力データ型の範囲に近似させるかどうか。

AUTOSAR 準拠

生成されたルックアップ テーブルが AUTOSAR 準拠かどうか。このオプションが [True] に設定されている場合、次のようになります。

  • 生成されるルックアップ テーブルは AUTOSAR Blockset からの Curve ブロックまたは Map ブロックになります。

  • テーブル データのデータ型はブロックの出力データ型と等しくなければなりません。

  • AUTOSAR Blockset ライセンスがチェックアウトされます。

このオプションは、[解のタイプ] オプションが [MATLAB] に設定されている場合はサポートされません。

half を探索

テーブル データとブレークポイントについて半精度データ型をオプティマイザーで確認するかどうか。

HDL 用に最適化

HDL 用に最適化された近似を生成するかどうか。このオプションが [True] に設定されている場合、生成される近似は、Prelookup ステップとそれに続く内挿で構成されるサブシステムになります。これは、効率的な HDL コードを生成するための明示的なパイプラインをもつルックアップ テーブルとして機能します。

HDL 用に最適化された近似を生成するには、近似する関数が 1 次元でなければならず、[ブレークポイントの指定][EvenSpacing] または [EvenPow2Spacing] に設定しなければなりません。このプロパティは、[解のタイプ] オプションが [MATLAB] に設定されている場合はサポートされません。

解のタイプ

アプリによる最適化されたルックアップ テーブルの出力方法。

  • Simlink — 最適化されたルックアップ テーブルを含む Simulink サブシステムを生成します。

  • MATLAB — 最適化されたルックアップ テーブルを MATLAB 関数として出力します。最適化されたルックアップ テーブルの MATLAB 関数としての生成は、次の場合はサポートされません。

    • AUTOSARCompliant プロパティが true に設定されている。

    • UseParallel プロパティが true に設定されている。

    • HDLOptimized プロパティが true に設定されている。

    • InterpolationMethod プロパティが 'None' に設定されている。

メモ

ルックアップ テーブル オプティマイザーで生成される Simulink ブロックと MATLAB 関数のルックアップ テーブルの近似は、数値的に等価にならない場合があります。ただし、どちらの解の形式でも、最適化問題で指定されたすべての制約を満たすことが保証されます。

追加の最適化オプションを指定します。

オプション説明
最大時間

近似を実行する最大時間。秒単位のスカラー数値として指定します。指定した時間に達するか、理想的な解が見つかるか、または別の停止条件に達するまで近似が実行されます。

既定の設定: Inf

最大メモリ使用量 (バイト)

生成されたルックアップ テーブルが使用できるメモリの最大量 (バイト単位)。スカラー整数として指定します。

既定の設定: 10000000

曲線上のテーブルの値

テーブルの値を、近似される関数の量子化された出力に制約するかどうか。このオプションを False に設定し、曲線上にないテーブルの値を許可することで、同じ許容誤差を維持しながらルックアップ テーブルのメモリを削減したり、許容誤差を減らしながら同じメモリを維持したりできる可能性があります。

既定の設定: False

並列の使用

最適化の反復を並列に実行するかどうか。反復を並列に実行するには、Parallel Computing Toolbox™ ライセンスが必要です。Parallel Computing Toolbox がない場合、または False を指定すると、反復は逐次実行されます。

このオプションは、[解のタイプ] オプションが [MATLAB] に設定されている場合はサポートされません。

既定の設定: False

制限

  • ルックアップ テーブル オブジェクトとブレークポイント オブジェクトは、モデル マスク ワークスペースではサポートされていません。

  • 近似する関数と関数ハンドルは次の条件を満たさなければなりません。

    • 関数は時不変でなければならない。

    • 関数は要素単位で動作しなければならない。つまり、各入力に 1 つの出力がある。

    • 関数に状態を含めてはならない。

    詳細については、ベクトル化を参照してください。

アルゴリズム

すべて展開する

バージョン履歴

R2018a で導入

すべて展開する