Main Content

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

为了生成 C/C++ 代码,代码生成器将动态定型的 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++ 代码生成定义变量的最佳做法

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

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

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

    >> coder

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

  3. 要获得代码生成就绪工具报告,请点击下一步。如果您的代码中包含不支持的函数或语言功能,将会在此处报告。

或者,对您的入口函数调用 screener。在命令行中,运行以下命令:

coder.screener('filename');

此工具会解析您的代码,并突出显示不支持的 MATLAB 函数和一些不支持的语言功能。请参阅 C/C++ 代码生成支持的函数和对象coder.screener

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

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

  • 为这些函数编写自定义代码。

    使用 coder.ceval 调用针对该函数的自定义 C 函数。

  • 使用 coder.extrinsic 调用该函数。

提示

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

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

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

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

coder.extrinsic 调用

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

另请参阅

| | | | | | | |

相关主题