准备 MATLAB 代码以进行代码生成
为了生成 C/C++ 代码,代码生成器将动态定型的 MATLAB® 代码转换为静态定型的 C/C++。动态类型的 MATLAB 变量可以在运行时更改其属性。可以使用同一变量来存储任何类、大小或复/实性的值。C/C++ 等静态类型的语言必须在编译时确定变量类型。
在生成代码之前,确定要为哪个函数生成代码。此函数称为入口函数或主函数。要准备您的代码以进行代码生成,请执行下列步骤:
初始化变量以进行代码生成。
筛查包含不支持的函数和语言功能的代码。
初始化变量以进行代码生成
由于生成的代码是静态定型的,请在使用之前初始化代码中的所有变量,以允许代码生成器在生成代码中正确地识别和分配变量。要识别其中一些问题,请在代码中包含以下行。
%#codegen
原始代码 | 问题 | 修改后的代码 |
---|---|---|
y = zeros(1,10); y(3) = 1 + 2i; | y 定义为双精度类型,但被赋予了复数双精度值。 | y = complex(zeros(1,10)); y(3) = 1 + 2i; |
for i = 1:N y(i,i) = i; end | 数组 y 在未定义的情况下进行了动态扩展。 | y = zeros(N,N); for i = 1:N y(i,i) = i; end |
有关特定数据类型的代码生成的数据定义的信息,请参阅代码生成的数据定义注意事项和为 C/C++ 代码生成定义变量的最佳做法。
筛查包含不支持的函数和语言功能的代码
代码生成器支持大多数语言功能和函数。要检查代码中是否包含不支持的函数和语言功能,请执行下列步骤:
从 App 选项卡启动 MATLAB Coder™。或者,在命令行中键入以下内容:
>> coder
在 App 中输入入口函数名称。不要在此步骤中添加子函数。代码生成器会自动包含所有必需的子函数。
要获得代码生成就绪工具报告,请点击下一步。如果您的代码中包含不支持的函数或语言功能,将会在此处报告。
或者,对您的入口函数调用 screener。在命令行中,运行以下命令:
coder.screener('filename');
此工具会解析您的代码,并突出显示不支持的 MATLAB 函数和一些不支持的语言功能。请参阅 C/C++ 代码生成支持的函数和对象和 coder.screener
。
如果您的代码包含不支持的函数,请考虑以下解决方法:
检查是否存在支持代码生成的替换函数和 System object。
为这些函数编写自定义代码。
使用
coder.ceval
调用针对该函数的自定义 C 函数。使用
coder.extrinsic
调用该函数。
提示
在命令行中设置高级代码生成选项
对配置对象 coder.config
使用 codegen
函数。根据编译的类型,您还可以使用 coder.CodeConfig
、coder.EmbeddedCodeConfig
和 coder.MexCodeConfig
。
研究特定函数的代码生成注意事项
代码生成支持的函数的参考页包含标题为扩展功能的部分。本节列出了为这些函数生成代码时的所有特殊注意事项。有关示例,请参阅 interp2
中的扩展功能。
coder.extrinsic
调用
调用 coder.extrinsic
会将函数声明为外部函数。代码生成器不为外部函数体生成代码,而是使用 MATLAB® 引擎来执行调用。
另请参阅
coder.target
| coder.screener
| coder.ceval
| coder.extrinsic
| codegen
| coder.config
| coder.CodeConfig
| coder.EmbeddedCodeConfig
| coder.MexCodeConfig