声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2783|回复: 0

[综合讨论] simulink一维查表功能实现以及代码生成

[复制链接]
发表于 2016-3-7 15:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
说起来,在实现某个简单的功能的时候我通常使用代码,使用的模型还是偏少一些。喜欢写代码一方面是因为自己的惯性和习惯,另一方面确实是因为我对模型开发技术了解的不够透彻。   
看看现在汽车电子行业的开发模式,模型开发的优势确实是显而易见的,这也成了行业的主流模式。不过,如果让我自己说一下那些地方模型开发能够比写代码有优势,我自己还是觉得说不太清楚。   
自己的经验来说,模型开发的主要优势有三个:第一个是可以仿真,这在一定程度上提前了Bug的修复环节;第二个在于对人员的编程功底要求低;第三个是便于重用而且有很多现成的模块。   
我自己进行模型开发还是偏少,真正到了开发阶段的对比,我倒觉得代码的灵活度要好得多。不过,说到化繁为简的功能,有两个功能确实是让我印象深刻。其中一个我之前在我的博客中大致写了一下,是CAN通讯的收发功能,这个需要独立的license支持。另外一个则相对通用一些,那就是查表函数。   
从一个简单的一维查表说起吧!如果需要做三角函数的运算,直接通过级数等运算方式计算效率相对来说比较低。不过,在嵌入式中很多时候要求的是实时性跟准确性的一个杂合体,而当精度足够高的时候计算数值在一定程度上可以放宽一些。这样,查表就凸显的比较有用了。   
下面搭建一个简单的正弦查表函数,并进行代码生成。模型:file:///C:\Users\Administrator\AppData\Roaming\Tencent\QQ\Temp\TempPic\P87CMMS}`7OCR6]U1J9H]2J.tmp

上面是一个查表功能的实现,想让让代码能够做到如此清晰直观,那还是有很大的挑战度的。   
数据定义:输入的查表轴是[0,2*pi]之间等间距的256个点。表格则是根据前面的轴进行了正弦函数的精确计算,数据定义全都采用了浮点。跟手写代码相比,简单的不仅仅是查表的函数功能,数据表也比较容易实现,尤其是这种比较具有规律性的数据。通过MATLAB内置的linspace函数以及正弦函数就可以轻松实现数据定义。   
简单的配置后,使用Embeded Coder进行代码生成。略去查表函数不去看,直接看一下数据定义便可以体验出基于模型开发的一点优势了:
转自:http://blog.sina.com.cn/s/blog_627927570102w88q.html

4.png
5.png
6.png
7.png
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-10 15:11 , Processed in 0.068458 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表