最適化されたルックアップ テーブルを 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);
MATLAB Coder™ がインストールされている場合、codegen
コマンドを使用して近似ルックアップ テーブル関数から C コードを生成できます。
inputArgs = linspace(1,10,10); codegen tanhApproximate.m -args {inputArgs}
Code generation successful.
参考
FunctionApproximation.Problem
| FunctionApproximation.Options
| solve
| approximate