MATLAB code 生成C代码样式

Matlab code 生成C代码需要以下产品:

  • MATLAB
  • MATLAB Coder
  • C 编译器

MATLAB Coder 将查找并使用支持的已安装编译器。

可以使用 mex -setup 更改默认编译器。

在本地工作文件夹中创建文件

  1. 创建一个本地工作文件夹,例如 c:\ecoder\work。
  2. 创建包含以下代码的文件 test_code_style.m:
  3. function y = test_code_style(x)
  4. %#codegen
  5. if (x == 1)
  6.     y = 1;
  7. elseif (x == 2)
  8.     y = 2;
  9. elseif (x == 3)   
  10.     y = 3;
  11. else
  12.     y = 4;

end

打开 MATLAB Coder

在 MATLAB 工具条的 App 选项卡上,点击代码生成下的 MATLAB Coder 图标。

该 App 会打开选择源文件页面。

指定源文件

  1. 选择源文件页面中,键入或选择入口函数 test_code_style.m 的名称。
  2. 工程位置字段中,将工程名称更改为 code_style.prj。
  3. 点击下一步以转到定义输入类型步骤。该 App 将分析函数以查找编码问题并确定代码生成就绪情况。如果 App 发现问题,它将打开检查代码生成就绪性页面,您可以在其中查看和解决问题。在此示例中,由于 App 没有检测到问题,因此将打开定义输入类型页面。

定义输入类型

由于 C 代码使用静态类型,因此在编译时,代码生成器必须确定 MATLAB 文件中所有变量的属性。因此,您必须指定所有函数输入的属性。要定义输入 x 的属性,请执行以下操作:

  1. 点击自行直接键入输入类型或全局类型
  2. 点击 x 右侧的字段。
  3. 从选项列表中选择 “int16”,然后选择“标量”。
  4. 点击下一步以转到检查运行时问题步骤。

注意

将 if-elseif-else 模式转换为 switch-case 语句优化仅对整数和枚举类型的输入有效。

检查运行时问题

检查运行时问题步骤从您的入口函数生成 MEX 文件,然后运行 MEX 函数并报告问题。此步骤是可选的。不过,建议最好执行此步骤。通过此步骤,可以检测并解决在生成的 C 代码中更难诊断出来的运行时错误。默认情况下,MEX 函数包括内存完整性检查。这些检查执行数组边界和维度检查,还检测为 MATLAB 函数生成的代码中是否存在内存完整性冲突问题。

  1. 要打开检查运行时问题对话框,请点击检查问题箭头 
  2. 检查运行时问题对话框中,输入使用示例输入调用 test_code_style 的代码。对于此示例,输入 test_code_style(int16(4))。
  3. 点击检查问题

App 将生成一个 MEX 函数。它将运行带示例输入的 MEX 函数。如果 App 在 MEX 函数生成或执行过程中检测到问题,它将提供警告和错误消息。您可以点击这些消息,导航到有问题的代码并修复问题。在本示例中,App 未检测到问题。

  1. 点击下一步以转到生成代码步骤。

配置代码生成参数

  1. 要打开生成对话框,请点击生成箭头 
  2. 编译类型设置为“静态库(.lib)”。
  3. 点击更多设置并设置以下设置:
    • 代码外观选项卡上,选中将 if-elseif-else 模式转换为 switch-case 语句复选框。
    • 调试选项卡上,确保已选择始终创建报告
    • 所有设置选项卡上,确保已选择启用代码可追溯性

生成 C 代码

点击生成

完成代码生成之后,代码生成器会在 /codegen/lib/test_code_style 子文件夹中生成 C 静态库 test_code_style.lib 和 C 代码。代码生成器提供指向报告的链接。

查看生成的代码

  1. 要打开代码生成报告,请点击查看报告链接。

代码窗格中显示 test_code_style 函数。

  1. 要对照查看 MATLAB 代码和 C 代码,请点击追溯代码
  2. 在 MATLAB 代码中,将光标放在语句 if (x == 1) 上。

该报告将 if (x == 1) 追溯到 switch 语句。

完成工作流

点击下一步打开完成工作流页面。

完成工作流页面指示已成功生成代码,还提供工程摘要以及指向生成的输出的链接。

要牢记的关键点

  • 要在生成代码之前检查运行时问题,请执行检查运行时问题步骤。
  • 要访问编译配置设置,请在生成代码页面上打开生成对话框,然后点击更多设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电力电子空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值