coder.const
Fold expressions into constants in generated code
Description
evaluates out
= coder.const(expression
)expression
and
replaces out
with the result of the evaluation
in generated code.
[
evaluates the multi-output function having handle out1,...,outN
] = coder.const(handle
,arg1,...,argN
)handle
. It then
replaces out1,...,outN
with the results of the evaluation in the
generated code. To learn about the behavior of coder.const
when
handle
accepts zero inputs and returns zero or one outputs, see Tips.
Examples
Input Arguments
Output Arguments
Limitations
You cannot use
coder.const
on dictionaries, dictionary keys, or dictionary values.
Tips
When possible, the code generator constant-folds expressions automatically. Typically, automatic constant-folding occurs for expressions with scalars only. Use
coder.const
when the code generator does not constant-fold expressions on its own.When constant-folding computationally intensive function calls, to reduce code generation time, make the function call extrinsic. The extrinsic function call causes evaluation of the function call by MATLAB instead of by the code generator. For example:
function j = fcn(z) zTable = coder.const(0:0.01:100); jTable = coder.const(feval('besselj',3,zTable)); j = interp1(zTable,jTable,z); end
If
coder.const
is unable to constant-fold a function call, try to force constant-folding by making the function call extrinsic. The extrinsic function call causes evaluation of the function call by MATLAB instead of by the code generator. For example:function yi = fcn(xi) y = coder.const(feval('rand',1,100)); yi = interp1(y,xi); end
Suppose that you call
coder.const
on a function handle with zero inputs and zero or one outputs. For example:In such situations, the code generator does not evaluateout = coder.const(@fcn);
fcn
, and setsout
to the function handle@fcn
itself. To force the evaluation offcn
in this special case, call the function explicitly inside thecoder.const
command. For example:out = coder.const(fcn());
Extended Capabilities
Version History
Introduced in R2013b