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 语句。

完成工作流

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

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

要牢记的关键点

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/764210.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】Python的安装与环境搭建

个人主页:【😊个人主页】 系列专栏:【❤️Python】 文章目录 前言Python下载环境配置测试环境变量是否配置成功配置环境变量 运行Python交互式解释器:命令行脚本集成开发环境(IDE:Integrated Development E…

电脑IP地址自动获取:操作指南与优势分析

在数字化时代,网络连接已成为我们日常生活和工作中的重要组成部分。而在建立网络连接的过程中,IP地址的设置无疑是至关重要的一环。IP地址,作为网络设备的唯一标识,其设置方式直接影响到网络的稳定性和安全性。本文将详细介绍如何…

大数据、人工智能、云计算、物联网、区块链序言【大数据导论】

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 本篇序言前 必看 【大数据导论】—大数据序言 这是…

山东益康,聚焦绿葆医院场景媒体,用爱服务人类健康

山东益康集团创建于1983年,发展成为集药品研发生产、销售、特医功能食品、精细化工、医疗防护产品等多产业经营为一体的省级企业集团。益康集团紧跟国家发展战略,满足民众日益增长的健康需求,将食品生产向特医保健功能食品转型升级&#xff0…

校园兼职小程序的设计

管理员账户功能包括:系统首页,个人中心,商家管理,管理员管理,用户管理,兼职管理,论坛管理,公告管理 微信端账号功能包括:系统首页,公告,兼职&…

【TS】TypeScript 入门指南:强大的JavaScript超集

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript 入门指南:强大的JavaScript超集一、TypeScript 简介1.1 …

【Python】已解决:ValueError: If using all scalar values, you must pass an index

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:ValueError: If using all scalar values, you must pass an index 一、分析问题背景 在Python编程中,尤其是当使用pandas库进行数据分析和处理时&a…

技巧类题目

目录 技巧类题目 136 只出现一次的数字 191 位1的个数 231. 2 的幂 169 多数元素 75 颜色分类 (双指针) 287. 寻找重复数 136 只出现一次的数字 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均…

应急响应:应急响应流程,常见应急事件及处置思路

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…

【PWN · ret2syscall | GoPwn】[2024CISCN · 华中赛区]go_note

一道GoPwn,此外便是ret2syscall的利用。然而过程有不小的曲折,参考 返璞归真 师傅的wp,堪堪完成了复现。复现过程中,师傅也灰常热情回答我菜菜的疑问,感谢!2024全国大学生信息安全竞赛(ciscn&am…

【U8+】供应链-库存管理-库存展望

知识点:库存展望可查询展望期内存货的预计库存、可用量情况。 分析步骤一:在库存管理-设置-选项-可用量检查页签库存展望可用量公式中预计入库和预计出库进行勾选和对应仓库档案需要勾选纳入可用量计算 步骤二:库存展望查询条件维护展望日期以及存货和选择

深度学习笔记: 最详尽解释混淆矩阵 Confusion Matrix

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家! 混淆矩阵 假设我们有包含临床测量数据的医疗数据,例如胸痛、良好的血液循环、动脉阻塞和体重…

昇思25天学习打卡营第06天|网络构建

神经网络基础 神经网络是一种模拟人脑神经元工作方式的计算模型,它由多个层次的节点(神经元)组成,每个神经元接收输入、进行加权求和并经过非线性激活函数转换后输出到下一层或作为最终输出。 昇思模型中的mindspore.nn提供了常…

PHP商家来客宝小程序系统客户打卡赢霸王餐美食之旅嗨翻天

🎉商家来客宝大放送!🍽️ 🔥开篇福利预警! 嘿宝贝们,今天要给你们揭秘一个超级劲爆的吃货福利——“商家来客宝客户打卡吃霸王餐”活动!🎉 是不是已经听到肚子咕咕叫了呢&#xff…

类和对象(提高)

类和对象(提高) 1、定义一个类 关键字class 6 class Data1 7 { 8 //类中 默认为私有 9 private: 10 int a;//不要给类中成员 初始化 11 protected://保护 12 int b; 13 public://公共 14 int c; 15 //在类的内部 不存在权限之分 16 void showData(void)…

Django + Vue 实现图片上传功能的全流程配置与详细操作指南

文章目录 前言图片上传步骤1. urls 配置2. settings 配置3. models 配置4. 安装Pillow 前言 在现代Web应用中,图片上传是一个常见且重要的功能。Django作为强大的Python Web框架,结合Vue.js这样的现代前端框架,能够高效地实现这一功能。本文将…

GraphPad Prism生物医学数据分析软件下载安装 GraphPad Prism轻松绘制各种图表

Prism软件作为一款功能强大的生物医学数据分析与可视化工具,其绘图功能尤为突出。该软件不仅支持绘制基础的图表类型,如直观明了的柱状图、展示数据分布的散点图,以及描绘变化趋势的曲线图,更能应对复杂的数据呈现需求&#xff0c…

【Python】已解决:urllib.error.HTTPError: HTTP Error 403: Forbidden

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:urllib.error.HTTPError: HTTP Error 403: Forbidden 一、分析问题背景 在使用Python的urllib库中的urlopen或urlretrieve函数下载文件时,有时会遇到…

指哪打哪,重绘神器!我已出手…

最近AI界又爆出了一个大新闻,阿里巴巴、香港大学和蚂蚁集团的研究人员联合推出了一款超厉害的AI工具——MimicBrush,它的问世,无疑给图像编辑领域带来了一场革命,它就像魔法师手中的魔杖,轻轻一挥,就能让图…

C# Web控件与数据感应之属性统一设置

目录 关于属性统一设置 准备数据源 范例运行环境 AttributeInducingFieldName 方法 设计与实现 如何根据 ID 查找控件 FindControlEx 方法 调用示例 小结 关于属性统一设置 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互&…