主要内容

函数定义

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

在创建MATLAB时,有一些特殊的注意事项®用于代码生成的函数。这些包括使用时的某些限制变长度输入宗量varargout、递归函数、匿名函数和嵌套函数。为了为MATLAB递归函数生成代码,代码生成器使用编译时递归或运行时递归。为了生成高效的C/ c++代码,代码生成器有时会创建一个函数的多个版本,称为函数专门化。在某些情况下,您可以通过使用coder.ignoreConstcoder.ignoreSize.在生成MEX函数时,可以绕过MATLAB代码中特定函数的代码生成,而是使用MATLAB引擎来执行调用。要做到这一点,使用coder.extrinsic构造。

功能

coder.extrinsic 将一个函数声明为外部函数并在内部执行它MATLAB
coder.ignoreConst 防止在函数专门化中使用表达式的常量值
coder.ignoreSize 防止代码生成器为常量大小的表达式创建函数专门化
coder.noImplicitExpansionInFunction 在生成的代码中禁用指定函数中的隐式展开

主题

编译指令% # codegen

说明MATLAB函数是用于代码生成的。

可变长度参数列表的代码生成

生成的代码变长度输入宗量varargout

递归函数的代码生成

在MATLAB代码中使用递归函数,用于代码生成。

强制代码生成器使用运行时递归

重写MATLAB代码,使代码生成器使用运行时递归而不是编译时递归。

匿名函数的代码生成

在MATLAB代码中使用匿名函数用于代码生成。

嵌套函数的代码生成

在MATLAB代码中使用用于代码生成的嵌套函数。

解析代码生成中的函数调用

代码生成器使用优先规则来解析函数调用。

代码生成路径上的文件类型解析

代码生成器使用优先规则解析文件类型。

使用MATLAB引擎在生成的代码中执行函数调用

如果代码生成不支持某个函数,则将其声明为万博1manbetx外在在MATLAB中执行。

故障排除

在for循环中进入varargin或varargout的索引

当代码生成器无法确定索引into的值时,强制展开循环变长度输入宗量varargout

避免在生成的代码中重复函数

在生成的代码中减少重复函数的发生。

在运行时递归调用之前必须对输出变量赋值

排除运行时递归的输出变量赋值问题。

已达到编译时递归极限

排除编译时递归限制错误。