В этом примере показано, как сгенерировать оптимизированную интерполяционную таблицу, когда MATLAB® функционирует, чтобы аппроксимировать гиперболическую касательную. Приближение интерполяционной таблицы функции MATLAB может затем использоваться, чтобы заменить гиперболическую функцию тангенса и сгенерировать код С.
Используйте 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)
| 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
метод. Используйте дополнительные аргументы name-value, чтобы задать имя и путь для функции интерполяционной таблицы.
filename = 'tanhApproximate'; filepath = cd; approximate(solution,'Name',filename,'Path',filepath);
Если вам установили MATLAB Coder™, можно использовать codegen
команда, чтобы сгенерировать код С от аппроксимированной функции интерполяционной таблицы.
inputArgs = linspace(1,10,10); codegen tanhApproximate.m -args {inputArgs}
Code generation successful.
FunctionApproximation.Problem
| FunctionApproximation.Options
| solve
| approximate