ルックアップ テーブル オプティマイザー
既存のルックアップ テーブルの最適化とルックアップ テーブルによる関数の近似
説明
ルックアップ テーブル オプティマイザー アプリを使用して、最適化された (メモリ効率が高い) ルックアップ テーブルを取得できます。
このアプリを使用すると、次が可能です。
Subsystem ブロックや Math Function ブロックを含む既存の Simulink® ブロックの近似
MATLAB® ハンドルの近似
曲線近似オブジェクトの近似
最適化されたルックアップ テーブルを Simulink ブロックまたは MATLAB 関数として返すように選択できます。
このオプティマイザーでは、浮動小数点と固定小数点のあらゆる組み合わせのデータ型をサポートしています。入力と出力の元のデータ型は必要に応じて保持することも変更することもできます。メモリの使用が最小限になるように、オプティマイザーでブレークポイントとテーブル データのデータ型、およびブレークポイントの数と間隔が選択されます。

ルックアップ テーブル オプティマイザー アプリを開く
Simulink ツールストリップ: [アプリ] タブの [コード生成] の下で、アプリ アイコンをクリックします。
Lookup Table ブロックがある Simulink モデルで Lookup Table ブロックを選択します。[ルックアップ テーブル] タブで [ルックアップ テーブル オプティマイザー] を選択します。
パラメーター
ソース
— メモリ効率が高い LUT のソース
Simulink ブロックまたはサブシステム (既定値) | MATLAB 関数ハンドル | 曲線近似オブジェクト
メモリ効率が高い LUT のソースを選択します。
Simulink ブロックまたはサブシステム — 近似する Simulink ブロックまたはサブシステム、または最適化する Lookup Table ブロック (1-D Lookup Table や n-D Lookup Table など)。いずれかの Lookup Table ブロックを指定した場合、アプリは最適化されたルックアップ テーブルを生成します。
MATLAB 関数ハンドル — ルックアップ テーブルで近似する MATLAB 関数ハンドル。関数ハンドルは MATLAB 検索パスにないと近似は失敗します。
近似曲線 — ベース ワークスペースからの近似する曲線近似
cfit
(Curve Fitting Toolbox) オブジェクト。近似するライブラリ モデルのリストについては、曲線近似または曲面近似のライブラリ モデルのリスト (Curve Fitting Toolbox)を参照してください。
ヒント
ルックアップ テーブルの近似の生成プロセスは、サブシステムよりも関数ハンドルの方が迅速です。サブシステムを関数ハンドルで表すことができる場合は、関数ハンドルを近似した方が迅速に処理できます。
出力の許容誤差
— オリジナルと近似の差の許容誤差
非負のスカラー
元の出力値と近似の出力値の差の最大許容誤差を [絶対]
と [相対]
のそれぞれについて指定します。
許可される語長
— ルックアップ テーブルの近似で許容される語長
[8 16 32]
(既定値) | 整数のベクトル
使用するハードウェアに基づいてルックアップ テーブルの近似で使用できる語長をビット単位で指定します。たとえば、ターゲットが組み込みプロセッサであれば、ルックアップ テーブルのデータ型をネイティブ型に制限できます。語長は 1 と 128 の間でなければなりません。
LUT 仕様
— 最適化されたルックアップ テーブルのオプション
内挿
| ブレークポイントの指定
| 出力タイプに飽和
| AUTOSAR 準拠
| half を探索
| HDL 用に最適化
| 解のタイプ
最適化されたルックアップ テーブルに使用するオプションを指定します。
オプション | 説明 |
---|---|
内挿 | 入力がブレークポイント値の間に来た場合、ルックアップ テーブルは隣接するブレークポイントを使って出力値を内挿します。
|
ブレークポイントの指定 | ブレークポイント データの間隔。
ブレークポイントの指定によるパフォーマンスへの影響の詳細については、速度、誤差、およびメモリの使用量に与える間隔の影響を参照してください。 |
出力タイプに飽和 | 関数の出力範囲を自動的に飽和して出力データ型の範囲に近似させるかどうか。 |
AUTOSAR 準拠 | 生成されたルックアップ テーブルが AUTOSAR 準拠かどうか。このオプションが
このオプションは、 |
half を探索 | テーブル データとブレークポイントについて半精度データ型をオプティマイザーで確認するかどうか。 |
HDL 用に最適化 | HDL 用に最適化された近似を生成するかどうか。このオプションが HDL 用に最適化された近似を生成するには、近似する関数が 1 次元でなければならず、 |
解のタイプ | アプリによる最適化されたルックアップ テーブルの出力方法。
メモ ルックアップ テーブル オプティマイザーで生成される Simulink ブロックと MATLAB 関数のルックアップ テーブルの近似は、数値的に等価にならない場合があります。ただし、どちらの解の形式でも、最適化問題で指定されたすべての制約を満たすことが保証されます。 |
設定
— 最適化オプション
最大時間
| 最大メモリ使用量 (バイト)
| 曲線上のテーブルの値
| 並列の使用
追加の最適化オプションを指定します。
オプション | 説明 |
---|---|
最大時間 | 近似を実行する最大時間。秒単位のスカラー数値として指定します。指定した時間に達するか、理想的な解が見つかるか、または別の停止条件に達するまで近似が実行されます。 既定の設定: |
最大メモリ使用量 (バイト) | 生成されたルックアップ テーブルが使用できるメモリの最大量 (バイト単位)。スカラー整数として指定します。 既定の設定: |
曲線上のテーブルの値 | テーブルの値を、近似される関数の量子化された出力に制約するかどうか。このオプションを 既定の設定: |
並列の使用 | 最適化の反復を並列に実行するかどうか。反復を並列に実行するには、Parallel Computing Toolbox™ ライセンスが必要です。Parallel Computing Toolbox がない場合、または このオプションは、 既定の設定: |
制限
ルックアップ テーブル オブジェクトとブレークポイント オブジェクトは、モデル マスク ワークスペースではサポートされていません。
近似する関数と関数ハンドルは次の条件を満たさなければなりません。
関数は時不変でなければならない。
関数は要素単位で動作しなければならない。つまり、各入力に 1 つの出力がある。
関数に状態を含めてはならない。
詳細については、ベクトル化を参照してください。
アルゴリズム
入力の上限と下限が無限
近似するオブジェクトで入力範囲を無限として指定した場合、入力の型が浮動小数点以外のときは、ソフトウェアでの近似の際に入力データ型の範囲に基づいて上限と下限の範囲が推定されます。結果のルックアップ テーブルの解では、元のオブジェクトで指定された無限の範囲ではなく、近似のアルゴリズムで使用された範囲が指定されます。
入力の上限と下限および入力データ型の範囲
入力に対して指定された [最小値]
または [最大値]
が指定された [目的のデータ型]
の範囲から外れる場合、近似のアルゴリズムでは [目的のデータ型]
で指定されたデータ型の範囲が使用されます。
[ブレークポイントの指定]
オプションが [EvenSpacing]
に設定されていても、入力の [最小値]
または [最大値]
に指定された値が [目的のデータ型]
の範囲と等しい場合は、アルゴリズムで解を求める際に [EvenPow2Spacing]
は使用されません。
バージョン履歴
R2018a で導入R2022b: 曲線近似オブジェクトのサポート
ルックアップ テーブル オプティマイザー アプリで、曲線近似 cfit
(Curve Fitting Toolbox) オブジェクトが近似の有効な入力としてサポートされるようになりました。
R2022a: 1 次元のフラットな内挿のメモリ削減の改善
ルックアップ テーブル オプティマイザーで、1 次元関数でフラットな内挿を使用する場合のルックアップ テーブルの値およびブレークポイントの最適化アルゴリズムが改善されました。この強化により、最適化されたルックアップ テーブルのメモリ削減が改善され、ルックアップ テーブルの最適化プロセスをより速く完了できるようになります。
この改善は、近似する関数が 1 次元であり、次のすべてのオプションが指定されている場合に適用されます。
Interpolation
がFlat
に設定されている。Breakpoint specification
がExplicitValues
に設定されている。On curve table values
がFalse
に設定されている。
R2021b: 最適化されたルックアップ テーブルの近似を MATLAB 関数として生成
ルックアップ テーブル オプティマイザー アプリを使用して、最適化されたルックアップ テーブルの近似を MATLAB 関数として生成します。生成された MATLAB 関数は編集可能で、MATLAB Coder™ を使用した C/C++ コードの生成をサポートします。
R2021a: HDL アプリケーション用に最適化された 1 次元ルックアップ テーブルを生成
ルックアップ テーブル オプティマイザー アプリを使用して、Prelookup ステップとそれに続く内挿で構成されるサブシステムを生成します。これは、効率的な HDL コードを生成するための明示的なパイプラインをもつルックアップ テーブルとして機能します。
R2021a: スカラー入力をもつ関数に対するルックアップ テーブルの最適化のサポート
これまで、ルックアップ テーブル オプティマイザーでは、近似する関数および関数ハンドルはベクトル化されていなければならず、各入力に対して厳密に 1 つの出力が必要でした。R2021a 以降では、ルックアップ テーブルの最適化で、スカラー入力しか許可されない Simulink ブロックおよびサブシステムの近似が完全にサポートされます。
R2021a: ルックアップ テーブル値の最適化の改善
ルックアップ テーブル オプティマイザーで、Flat
および Nearest
の内挿法で曲線上にないテーブルの値を許可する場合のルックアップ テーブルの値の最適化アルゴリズムが改善されました。この強化により、ルックアップ テーブルの最適化プロセスをより速く完了できるようになり、最適化されたルックアップ テーブルのメモリ削減が改善されます。
R2021a: ルックアップ テーブル オプティマイザー アプリでの最適化の停止
ルックアップ テーブル オプティマイザーで、最適化探索が完了する前に最適化ソルバーを停止できるようになりました。[停止] ボタンがクリックされた時点で見つかった最適な解をアプリが選択し、その解をアプリ内に表示します。
R2020b: 最適化されたルックアップ テーブルでの半精度の確認
テーブル データとブレークポイント値の半精度データ型を最適化プロセスで確認するかどうかを指定します。
R2020a: モデル内のルックアップ テーブルの反復的な再設計
ルックアップ テーブル オプティマイザーで、ルックアップ テーブルで近似するブロックが関数の近似を含むバリアント サブシステムに置き換えられるようになりました。このバリアント サブシステムにより、元の関数に戻り、別の最適化設定や制約を使用して最適化を再実行できます。
R2020a: ルックアップ テーブルの最適化の並列実行
最適化の反復を並列実行するかどうかを指定します。反復を並列に実行するには、Parallel Computing Toolbox ライセンスが必要です。Parallel Computing Toolbox ライセンスがない場合、または [False]
を指定すると、反復は逐次実行されます。
R2019b: 最適化されたルックアップ テーブルでの曲線上にないテーブルの値の許可
曲線上にないテーブルの値を含む最適化されたルックアップ テーブルを生成できるようになりました。
以前のリリースでは、最適化を行うには、テーブルの値と近似する元の関数の量子化された出力値が一致していなければなりませんでした。曲線上にないテーブルの値を許可することで、同じ許容誤差を維持しながらルックアップ テーブルのメモリを削減したり、許容誤差を減らしながら同じメモリを維持したりできる可能性があります。
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)