函数定义
定义和调用用于代码生成的函数
在创建MATLAB时,有一些特殊的考虑®用于代码生成的函数。这些包括使用时的某些限制变长度输入宗量
而且varargout
、递归函数、匿名函数和嵌套函数。为了为MATLAB递归函数生成代码,代码生成器使用编译时递归或运行时递归。为了生成高效的C/ c++代码,代码生成器有时会创建一个函数的多个版本,称为函数专门化。在某些情况下,可以通过使用防止代码生成器创建函数特殊化coder.ignoreConst
而且coder.ignoreSize
.在生成MEX函数时,可以绕过MATLAB代码中特定函数的代码生成,而是使用MATLAB引擎来执行调用。要做到这一点,请使用coder.extrinsic
构造。
功能
coder.extrinsic |
将函数声明为外部函数并在内部执行MATLAB |
coder.ignoreConst |
防止在函数特殊化中使用表达式的常量值 |
coder.ignoreSize |
防止代码生成器为常量表达式创建函数专门化 |
coder.sameSizeBinaryOp |
在没有隐式展开的情况下应用元素二进制操作 |
coder.noImplicitExpansionInFunction |
在生成的代码中的指定函数中禁用隐式展开 |
主题
- 编译指令%#代码源
指示MATLAB函数用于代码生成。
- 生成启用隐式展开的代码
代码生成器在生成的代码中引入修改,以完成隐式展开。
- 优化生成代码中的隐式展开
默认情况下,在生成的代码中启用隐式展开。
- 可变长度参数列表的代码生成
为
变长度输入宗量
而且varargout
. - 为参数块生成验证输入参数的代码
为MATLAB代码生成约束类、大小和函数输入值的其他方面的代码。
- 递归函数的代码生成
在MATLAB代码中使用递归函数,用于代码生成。
- 强制代码生成器使用运行时递归
重写MATLAB代码,使代码生成器使用运行时递归而不是编译时递归。
- 匿名函数的代码生成
在MATLAB代码中使用匿名函数用于代码生成。
- 嵌套函数的代码生成
使用MATLAB代码中用于代码生成的嵌套函数。
- 代码生成中函数调用的解析
代码生成器使用优先级规则来解析函数调用。
- 代码生成路径上文件类型的解析
代码生成器使用优先级规则来解析文件类型。
- 使用MATLAB引擎在生成的代码中执行函数调用
如果某个函数不支持代码生成,则将其声明为万博1manbetx外在在MATLAB中执行。
故障排除
在for循环中将非常量索引到varargin或varargout
当代码生成器无法确定索引的值时强制展开循环变长度输入宗量
或varargout
.
减少生成代码中重复函数的出现。
解决运行时递归的输出变量分配问题。
排除编译时递归限制错误。
排除代码生成期间发生的大小不匹配错误。