上一期讲到线性插值法在数值近似上的应用,末尾简单提了下直接利用Matlab进行验证和代码生成。

今天接着上一讲说说具体的方法以及如何通过配置选项进行优化,从而使之适用于嵌入式芯片上运行。

准备工作

Matlab 2012b。当然有更高版本的也一样。大家可以去官网申请试用版,土豪可以直接购买。

Microsoft Visual Studio 2010。之前试过Matlab 2012b与VS2008关联,总是提示错误,缺少x86 SDK。所以建议用VS2010。

两个软件进行关联。之所以要关联,是因为C代码自动生成以后,Matlab会调用C编译器编译一次生成的代码。不过即便不关联也无所谓,你可以copy到你的嵌入式芯片IDE中进行编译。关联方法参见前面几期的内容:

如何在Matlab中与VS2010关联编译和调试C代码

模型建立

还是类似上一期的例子,假定有一款PTC温度传感器的温度与其分压得到的电压值关系如下。

我们首先利用Simulink的look up table组件进行线性插值,将数据填入对应配置窗口。类似上一讲的方式,简单验证下模型输入输出是否如设想一样。

初版代码生成

在Simulink组件中找到in和out端子,放在lookup table两端。另外,只有在solver选择了Fixed-step才能进行代码自动生成。配置方法如下,选择设置按钮,找到Solver选项:

- Type:Fixed-step,意思为固定仿真补偿,简单的理解就是按固定的频率跑一次;

- Solver:我一般选择ode1。通俗的来说,不同的Solver表示不同数学解法。限于篇幅就不展开了,具体可以自己百度一下。

- Fixed-step size:0.02,单位是s,意思是每20ms跑一次仿真。参数的设置取决于你这段代码实际想在嵌入式芯片运行的频率。

然后在Code选项找到C/C++ Code,然后选择Build Model,等待完成。完成后会有窗口弹出。还可以在command窗口看生成代码历经的整个过程。

完成之后,可以在模型所在文件夹找到生成的源码。

乍一看是不是很失望?代码文件很多,而且代码行数也很多,排布有点杂乱。别急,接下来开始优化配置。

优化代码生成

优化1:创建子模块,并定义函数名和文件名

- 全选模型的所有组件,创建一个Subsystem。

- 将创建好的子系统,右击进行如下配置:

- 勾选红色框部分的内容

- 可以选择自定义的执行函数名以及生成的代码文件的文件名。

优化2:优化生成代码格式

- 选择Embedded coder模式生成代码

- 选择内联参数。不勾选的话,它会把常量也定义为一个结构,会增加代码量。

- 根据你的芯片配置你期望的硬件平台。

优化3:设置代码生成报告的内容,方便代码生成以后查看情况。

以下是生成的报告和代码文件

- 代码总体概览,如代码行数,变量个数等

- 实际生成代码。是不是比之前默认配置生成的代码简洁且清晰多了?

本期小结:本期以线性插值为例,详细讲述了如何在Simulink中进行各项操作,以生成更加适合在嵌入式芯片中运行的代码。在更高版本的Matlab中,除了上述的优化配置以外,还有许多其他方法选项进一步优化生成的代码,有兴趣的话可以参考前面几期的内容:[Matlab]Matlab 2017 深圳站主题演讲资料分享。本期就这样啦。觉得不错的话,欢迎扫码关注本公众号。

[Matlab]利用Simulink进行模型设计和代码自动生成相关推荐

  1. 英飞凌代码生成_利用MATLAB-RTW的嵌入式代码自动生成与整合

    2018 收稿日期 :2018 - 01 - 02 收修改稿日期 :2018 - 02 - 01 基金项目 : 国家自然科学基金项目 (51405270) 资助 . 作者简介 : 陈 攀 , 男 ,1 ...

  2. 国产自主可控的形式化验证代码自动生成工具ModelCoder可替代Matlab/Sumlink

    在安全关键领域,基于模型的软件工程或者软件开发已逐渐进入了我国的装备研制过程中.使用SimuLink或者SCADE等嵌入式软件建模工具对算法或者控制逻辑进行可视化建模,然后生成高可靠的二进制代码逐渐成 ...

  3. 亚马逊开源模型设计神器:AutoGluon,三行代码自动生成SOTA模型!

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自新智元. 亚马逊最近宣布推出AutoGluon,这是一个新的开源库,开发人员可以使用该库构建包含图像.文本或表格数据集的机器学习应用程序.使用 ...

  4. matlab找不到bma_g代码,基于矢量图形的G代码自动生成软件路径优化算法的研究

    在数控雕刻技术中,数控编程是设计人员与执行人员联系的桥梁.传统的方法是由技术员从图纸中提取零件信息,结合加工工艺要求,根据数控加工程序的标准手工编制加工程序,速度较慢且精度较低.随着数控技术的发展,市 ...

  5. 国产自主可控的代码自动生成工具SkyEye

    传统的系统开发过程,都是由工程师根据项目需求书来编写代码完成系统的开发,但随着功能的扩充和版本的迭代,系统中庞大的代码量很难确保正确无误,给后期测试和仿真带来了很大的压力和成本,在航空航天.卫星系统. ...

  6. lin通信ldf文件解析_基于LIN协议的代码自动生成系统及方法_2014108531085_说明书_专利查询_专利网_钻瓜专利网...

    技术领域 本发明属于汽车电子LIN网络通讯领域,公开了一种利用LDF文件自动生成LIN通讯软件代码的方法. 背景技术 目前汽车电子产品的软件开发逐渐向模块化.标准化.集成化.自动化发展.LIN通讯模块 ...

  7. 使用Java代码自动生成工具:Telosys

    在Java开发工具中Java代码自动生成工具是很常见的,代码生成是模型驱动开发中最简单和最常用的技术.我们使用一个信息源,一种模型形式,并将其与一些模板结合起来以获得生成的工件,例如代码. 代码生成是 ...

  8. 干货 | 前端智能化探索,骨架屏低代码自动生成方案实践

    作者简介 ZiLin Wang,前端开发者,函数式编程爱好者,最近沉迷于低代码平台和WebAssembly:Ivan Zhang,擅长前端打杂,最近专注于Sketch插件和DesignOps平台:Sh ...

  9. 自定义Android注解Part2:代码自动生成

    上一期我们已经把butterknife-annotations中的注解变量都已经定义好了,分别为BindView.OnClick与Keep. 如果你是第一次进入本系列文章,强烈推荐跳到文章末尾查看上篇 ...

  10. 近期活动盘点:高级机器学习训练营、基于神经网络的代码自动生成” “开放学术图谱”、西山金融科技产业创新论坛...

    想知道近期有什么最新活动?大数点为你整理的近期活动信息在此: 清华唐杰教授授课 高级机器学习训练营 我们都知道随着数据复杂度的不断提高,经典机器学习算法已经很难满足实际需求,当前,针对复杂数据对象.复 ...

最新文章

  1. OpenCV最基本的测试代码-图像的读取与显示
  2. 计算机的优势和劣势_100亿倍,中国量子计算机完胜美国,向中方科学家致敬
  3. lajp mysql安装_Php调用java说明
  4. 第二十一章:变换(三)
  5. WEB前端 基础知识汇总
  6. cassandra 数据到Java对象的映射绑定
  7. 【MFC系列-第22天】GDI算法实战——过渡色
  8. 图解TCPIP-OSI7层网络模型
  9. BATJ等大厂最全经典面试题分享
  10. python毕业设计总结范文大全_关于毕业设计总结范文
  11. 蓝牙的原理,蓝牙耳机怎么连接手机
  12. 《Android破解之北斗手机定位系统》之继续破解
  13. Android闹钟制作过程图,小学闹钟手工制作步骤详解(配图)
  14. 2020中国项目经理视频直播大会成功举办
  15. WIN10打印机显示服务器脱机,win10网络打印机显示脱机处理方法
  16. Node-RED中通过node-red-ui-webcam节点实现访问摄像头并截取照片预览
  17. Oracle 使用序列插入表自增字段(主键)
  18. win10右键新建没有文本文档
  19. atm机C语言密码编程,C语言编程ATM机.doc
  20. [转]Berkeley DB实现分析

热门文章

  1. Java语言程序设计(基础篇)
  2. NLTK(自然语言工具包)
  3. 《Java就业培训教程》_张孝祥_书内源码_04
  4. access 数据库入门
  5. ubuntu安装ulipad
  6. snmp windows工具_局域网IP扫描工具下载-局域网IP扫描工具(SoftPerfect Network Scanner)v7.3.0官方版...
  7. KEmulator与eclipse的集成
  8. 牛腩新闻发布系统(一)
  9. cocoStudio UI编辑器设置自定义字体
  10. MT4指标三线KDJ指标下载