Сложите выражения в константы в сгенерированном коде
оценивает out
= coder.const(expression
)expression
и заменяет out
с результатом оценки в сгенерированном коде.
[
оценивает мультивыходную функцию, имеющую указатель out1,...,outN
] = coder.const(handle
,arg1,...,argN
)handle
. Затем он заменяет out1,...,outN
с результатами оценки в сгенерированном коде.
Когда это возможно, генератор кода constant-folds выражения автоматически. Как правило, автоматическое свертывание константы происходит только для выражений со скалярами. Использовать coder.const
когда генератор кода не складывает выражения самостоятельно.
При постоянном сворачивании вычислительно интенсивных вызовов функции, чтобы уменьшить время генерации кода, сделайте вызов функции внешним. Вызов внешней функции вызывает оценку вызова функции MATLAB, а не генератором кода. Для примера:
function j = fcn(z) zTable = coder.const(0:0.01:100); jTable = coder.const(feval('besselj',3,zTable)); j = interp1(zTable,jTable,z); end
Если coder.const
не может постоянно складывать вызов функции, пытаться принудительно свернуть функцию, делая вызов функции внешним. Вызов внешней функции вызывает оценку вызова функции MATLAB, а не генератором кода. Для примера:
function yi = fcn(xi) y = coder.const(feval('rand',1,100)); yi = interp1(y,xi); end