В этом примере показано, как сгенерировать оптимизированную интерполяционную таблицу, когда 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