Main Content

函数定义

为代码生成定义和调用函数

在创建用于 MATLAB Function 模块的 MATLAB® 函数时,有一些特殊的注意事项。例如,使用 vararginvarargout、递归函数、匿名函数和嵌套函数时,存在某些限制。为了生成 MATLAB 递归函数的代码,代码生成器使用编译时递归或运行时递归。为了生成高效的 C/C++ 代码,代码生成器有时会创建一个函数的多个版本,称为函数特化。在某些情况下,您可以通过使用 coder.ignoreConstcoder.ignoreSize 来阻止代码生成器创建函数特化。您可以绕过 MATLAB 代码中特定函数的代码生成,改用 MATLAB 引擎来执行调用。为此,请使用 coder.extrinsic 构造。

模块

MATLAB FunctionSimulink 模型中包含 MATLAB 代码
MATLAB System在模型中包含 System object

函数

coder.extrinsic将函数声明为外部函数,并在 MATLAB 中执行它
coder.ignoreSizePrevent code generator from creating function specializations for constant-size expressions (自 R2019b 起)
coder.ignoreConstPrevent use of constant value of expression for function specializations
coder.mustBeConstValidate that value is a compile-time constant (自 R2023b 起)
coder.unroll通过为每次循环迭代生成循环体的副本来展开 for 循环
coder.sameSizeBinaryOpApply element-wise binary operations without implicit expansion (自 R2021b 起)
coder.noImplicitExpansionInFunctionDisable implicit expansion within the specified function in the generated code (自 R2021b 起)
coder.readRead data files at run time in generated code (自 R2023a 起)
coder.writeCreate data files that the generated code reads at run time (自 R2023a 起)

主题

疑难解答

Nonconstant Index into varargin or varargout in a for-Loop

Force loop unrolling when the code generator cannot determine the value of the index into varargin or varargout.

Avoid Duplicate Functions in Generated Code

Reduce the occurrence of duplicate functions in the generated code.

Output Variable Must Be Assigned Before Run-Time Recursive Call

Troubleshoot output variable assignment for run-time recursion.

Compile-Time Recursion Limit Reached

Troubleshoot compile-time recursion limit error.

解决错误:大小不匹配

对代码生成过程中出现的大小不匹配错误进行故障排除。