使用 MATLAB Coder 生成 MEX 函数
使用 MATLAB Coder 生成 MEX 函数的工作流
步骤 | 操作 | 详细信息 |
---|---|---|
1 | 设置 MATLAB® Coder™ 工程。 | 设置 MATLAB Coder 工程 |
2 | 指定编译配置参数。将编译类型设置为 MEX。 | 配置工程设置 |
3 | 编译工程。 | 编译 MATLAB Coder 工程 |
MATLAB Online™ 不支持 MATLAB Coder。要在 MATLAB Online 中生成 MEX 函数,请使用 codegen
命令。
使用 MATLAB Coder 生成 MEX 函数
此示例说明如何使用 MATLAB Coder 从 MATLAB 代码生成 MEX 函数。
创建入口函数
在一个本地可写文件夹中,创建 MATLAB 文件 mcadd.m
,其中包含:
function y = mcadd(u,v) %#codegen y = u + v;
创建测试文件
在同一本地可写文件夹中,创建 MATLAB 文件 mcadd_test.m
,该文件调用具有示例输入的 mcadd
。示例输入是类型为 int16
的标量。
function y = mcadd_test
y = mcadd(int16(2), int16(3));
打开 MATLAB Coder
在 MATLAB 工具条的 App 选项卡上,点击代码生成下的 MATLAB Coder 图标。
该 App 会打开选择源文件页面。
指定源文件
在选择源文件页面中,键入或选择入口函数
mcadd
的名称。该 App 将使用默认名称
mcadd.prj
创建一个工程。点击下一步以转到定义输入类型步骤。该 App 将分析函数以查找编码问题并确定代码生成就绪情况。如果 App 发现问题,它将打开检查代码就绪性页面,您可以在其中查看和解决问题。在此示例中,由于 App 没有检测到问题,因此将打开定义输入类型页面。
定义输入类型
由于 C 使用静态定型,MATLAB Coder 必须在编译时确定 MATLAB 文件中所有变量的属性。您必须指定所有入口函数输入的属性。根据入口函数输入的属性,MATLAB Coder 可以推断 MATLAB 文件中所有变量的属性。
指定 MATLAB Coder 用来自动定义 u
和 v
的类型的测试文件 mcadd_test.m
:
输入或选择测试文件
mcadd_test.m
。点击自动定义输入类型。
测试文件
mcadd_test.m
使用示例输入类型调用入口函数mcadd
。MATLAB Coder 推断输入u
和v
为int16(1x1)
。点击下一步以转到检查运行时问题步骤。
检查运行时问题
检查运行时问题步骤从您的入口函数生成 MEX 文件,然后运行 MEX 函数并报告问题。此步骤是可选的。不过,建议最好执行此步骤。您可以检测并解决在生成的 C 代码中更难诊断出来的运行时错误。
要打开检查运行时问题对话框,请点击检查问题箭头 。
App 使用
mcadd_test
填充测试文件字段,该测试文件用于定义输入类型。点击检查问题。
App 将生成一个 MEX 函数。它运行测试文件,将对
mcadd
的调用替换为对 MEX 函数的调用。如果 App 在 MEX 函数生成或执行过程中检测到问题,它将提供警告和错误消息。您可以点击这些消息,导航到有问题的代码并修复问题。在本示例中,App 未检测到问题。点击下一步以转到生成代码步骤。
生成 MEX 函数
要打开生成对话框,请点击生成箭头 。
在生成对话框中,将编译类型设置为 MEX,将语言设置为 C。对其他工程编译配置设置使用默认值。
点击生成。
App 指示代码生成成功。它在页面左侧显示源 MATLAB 文件和生成的输出文件。在变量选项卡上,它显示有关 MATLAB 源变量的信息。在目标编译日志选项卡上,它会显示编译日志,包括编译器警告和错误。
MATLAB Coder 编译工程,并默认在当前文件夹中生成 MEX 函数
mcadd_mex
。MATLAB Coder 还会在名为codegen/mex/mcadd
的子文件夹中生成其他支持文件。MATLAB Coder 使用 MATLAB 函数的名称作为生成文件的根名称。它为 MEX 文件创建一个特定于平台的扩展名。请参阅Naming Conventions。要查看代码生成报告,请点击查看报告。
点击下一步打开完成工作流页面。
查看“完成工作流”页面
完成工作流页面指示已成功生成代码,还提供工程摘要以及指向生成的输出的链接。
配置工程设置
要打开工程设置对话框,请执行下列操作:
要打开生成对话框,请点击生成箭头 。
点击更多设置。
要更改工程设置,请点击包含要更改的设置的选项卡。例如,要更改对整数溢出进行饱和处理设置,请点击速度选项卡。
MEX 函数使用一组与库和可执行文件不同的配置参数。将输出类型从 MEX 函数更改为源代码静态库、动态库或可执行文件时,请验证这些设置。
某些配置参数与 MEX 和独立代码生成相关。如果您在输出类型为 MEX 函数时启用这些参数中的任何参数,并且您要在 C/C++ 代码生成中也使用相同的设置,则必须为 C/C++ 静态库、C/C++ 动态库和 C/C++ 可执行文件再次启用它。
另请参阅
编译 MATLAB Coder 工程
要使用指定的设置编译工程,请在生成代码页面上点击生成。当 MATLAB Coder 编译工程时,它会显示编译进度。编译完成后,App 会在目标编译日志选项卡上提供有关编译的详细信息。
如果启用了代码生成报告或发生编译错误,则 App 会生成报告。该报告提供有关最近编译的详细信息,并提供指向该报告的链接。
要查看报告,请点击查看报告链接。该报告提供指向 MATLAB 代码和生成的 C/C++ 文件的链接,并提供 MATLAB 代码中变量的编译时类型信息。如果发生编译错误,报告将列出错误和警告。