Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

准备 MATLAB 代码以进行代码生成

为了生成 C/C++ 代码,代码生成器将动态定型的 MATLAB® 代码转换为静态定型的 C/C++ 代码。在动态类型语言中,给定变量的类、大小和复/实性可能在运行时发生变化。相比之下,静态类型语言必须在编译时确定变量类型。

在生成代码之前,确定要为哪个函数生成代码。此函数称为入口函数或主函数。要准备您的代码以进行代码生成,请执行下列步骤:

  1. 初始化变量以进行代码生成。

  2. 筛查包含不支持的函数和语言功能的代码。

初始化变量以进行代码生成

由于生成的代码是静态定型的,请在使用之前初始化代码中的所有变量,以允许代码生成器在生成代码中正确地识别和分配变量。要识别其中一些问题,请在代码中包含以下行:

%#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++ 代码生成定义变量的最佳做法

筛查包含不支持的函数和语言功能的代码

代码生成器支持大多数语言功能和函数。请参阅C/C++ 代码生成支持的函数和对象。要检查代码中是否包含不支持的函数和语言功能,请执行下列步骤:

  1. App 选项卡启动 MATLAB Coder™。或者,在命令行中输入以下内容:

    >> coder

  2. 在 App 中输入入口函数名称。不要在此步骤中添加子函数。代码生成器会自动包含必需的子函数。

  3. 要查看代码中不支持的函数或语言功能,请点击下一步以打开代码生成就绪工具报告。

或者,对入口函数调用 coder.screener 函数。在命令行中输入:

coder.screener('filename');

此函数会解析您的代码,并突出显示不支持的 MATLAB 函数和一些不支持的语言功能。请参阅 coder.screener

如果您的代码包含不支持的函数,请考虑以下解决方法:

  • 检查是否存在支持代码生成的替换函数和 System object。

  • 为不支持的函数编写自定义代码。

  • 使用 coder.ceval 调用自定义 C 函数来替换不支持的函数。

  • 使用 coder.extrinsic 调用不支持的函数。

有关这些解决办法的更多详细信息,请参阅解决错误:代码生成不支持函数

提示

在命令行中设置高级代码生成选项

对配置对象 coder.config 使用 codegen 函数。根据编译的类型,您还可以使用 coder.CodeConfigcoder.EmbeddedCodeConfigcoder.MexCodeConfig

研究特定函数的代码生成注意事项

代码生成支持的函数的参考页包含标题为扩展功能的节。该节列出了为这些函数生成代码时的特殊注意事项。有关示例,请参阅 interp2 中的扩展功能

调用 coder.extrinsic

调用 coder.extrinsic 会将函数声明为外部函数。代码生成器不为外部函数体生成代码,而是使用 MATLAB 引擎来执行调用。

另请参阅

| | | | | | | |

相关主题