Main Content

最適化されたルックアップ テーブルを MATLAB 関数としてプログラムで生成

この例では、双曲線正接を近似するために、最適化されたルックアップ テーブルを MATLAB® 関数として生成する方法を示します。この MATLAB 関数ルックアップ テーブルの近似を使用して双曲線正接関数を置き換え、C コードを生成できます。

FunctionApproximation.Options オブジェクトを使用して、MATLAB 関数を解のタイプとして指定します。精度と語長の制約には既定値を使用します。

options = FunctionApproximation.Options();
options.ApproximateSolutionType = 'MATLAB';

近似する関数と入力範囲、データ型を FunctionApproximation.Problem オブジェクトで指定します。

functionToApproximate = 'tanh';

problem = FunctionApproximation.Problem(functionToApproximate, 'Options', options);
problem.InputLowerBounds = 0;
problem.InputUpperBounds = 0.25;

solve メソッドを使用して最適化の問題を解決し、ルックアップ テーブルの解を作成します。

solution = solve(problem)
Searching for fixed-point solutions.

|  ID |  Memory (bits) | Feasible | Table Size | Breakpoints WLs | TableData WL | BreakpointSpecification |             Error(Max,Current) | 
|   0 |             64 |        1 |          2 |              16 |           16 |             EvenSpacing |     7.812500e-03, 1.962196e-03 |
|   1 |             64 |        1 |          2 |              16 |           16 |         EvenPow2Spacing |     7.812500e-03, 1.962196e-03 |

Best Solution
|  ID |  Memory (bits) | Feasible | Table Size | Breakpoints WLs | TableData WL | BreakpointSpecification |             Error(Max,Current) |
|   1 |             64 |        1 |          2 |              16 |           16 |         EvenPow2Spacing |     7.812500e-03, 1.962196e-03 |
solution = 
  1x1 FunctionApproximation.LUTSolution with properties:

          ID: 1
    Feasible: "true"

生成されたルックアップ テーブルを MATLAB 関数として取得するには、approximateメソッドを使用します。オプションの名前と値の引数を使用して、ルックアップ テーブル関数の名前とパスを指定します。

filename = 'tanhApproximate';
filepath = cd;
approximate(solution,'Name',filename,'Path',filepath);

luto_matlab_function_tanh.png

MATLAB Coder™ がインストールされている場合、codegen コマンドを使用して近似ルックアップ テーブル関数から C コードを生成できます。

inputArgs = linspace(1,10,10);
codegen tanhApproximate.m -args {inputArgs}
Code generation successful.

参考

| | |

関連するトピック