在
MATLAB中
存在一部分
函数,
解释
和用法很类似,使用时不容易
区分
。
给
不熟悉该函数的
使用
者带来了困扰。
一
、问题分析过程
例如
,after(n,Event)
和
at(n,Event)
两个函数用法,均
为在事件Event调用n次后
触发
后续动作;
MATLAB
论坛中也有
人提出
了
这两个
函数差别的疑问。
网友
答复:
我认为这个网友回答的很专业,但是我
看到网友
说这是
“
个人观点
”
,显然没有
相关资料
的
支撑。
我的
心里也对这个
两个
函数
本质区别
有了疑问。我认为
技术
的
学习
和处理需要
一个严谨
的态度
。随后
我
就开始
了查找答案
的过程,
方法1:
网络搜索法
。在网上
没有找
到
一个具体的满意答复。
方法2:
MATLAB
帮助文档
法
。
没有找到
相关
函数注释
。
二
、C代码分析法
经过
一番折腾
,
仍旧没有找到结果。
基于对
问题的好奇,我决定使用MATLAB\Simulink
\
Stateflow
生成
C代码
法
,通过C代码分析模型
中
的函数
差异
性
。
例
,
建立事件触发
模型
示例
,
(1)
进入
模型后,默认进入
状态
A,y=5
;
(2)
经过事件Event1
触发5次
后,进入状态B,
y
=3
;
(3)
再经过
事件
Event
2
触发3次后
,进入状态A,y=5;
1.建立模型Stateflow,如下所示(
模型可在文章附件中下载
),事件触发Stateflow建模过程
详见文章:
《
MATLABSimulinkStateflow事件event和节点history的使用-实例分析》
。
2.配置模型C代码生成,如下图模型所示。配置过程
详见文章:《
如何将Matlab/Simulink/Stateflow模型码编译生成C代码》
。
3.追溯
模型生成的C
代码。选中
想追溯
C代码
的
模型
部分-
右键
对应模型-C/C++ Code–Navigate To C/C++
,
即可直接追溯到
该
出模型
生成
的对应C代码。
4.
分析
C代码。
生成
的C代码
如下
所示
5.
结论
。
查看上述生成的
C
代码
,
易见after(n,Event1)
和
at(n,Event2)
二者区别。
after(n,Event1)
:事件
Event1
触发次
数>=n,
执行
对应的after函数
;
at(n,Event2)
事件
Event2
触发次
数==n,
执行
对应的at函数
。
模型
开发设计时
建议
使用
after
函数计
数
事件次数。
如果
在生成C代码过程中,选择了
at事件
触发n次时,
ECU发送
数据丢帧,将会导致
事件
触发无法实现。
当然
设计
师需要结合
具体
情
况进行建模
,
每格函数都有
其
设计特点。
![7eb16d2aa7df8f94daeb432dfd70cba9.png](https://i-blog.csdnimg.cn/blog_migrate/8146393ec2720e2e19b7d442ad3c5c13.png)
![767a2dd496cf97e5257e8417fca21ffa.png](https://i-blog.csdnimg.cn/blog_migrate/2350469fd0ebc5f827bc6aa36e567c87.png)
![9ed18b69a77b43f20f62a1ad293d1d24.png](https://i-blog.csdnimg.cn/blog_migrate/e156cbe88d7c9b056a1ff731dc18e185.jpeg)
![9e3bd8becc9f42da15515425c9313476.png](https://i-blog.csdnimg.cn/blog_migrate/5304bf7630c92606c6b3172198ee0cc5.png)
![6cd7ed830ae62bbb5b2f89a885bec324.png](https://i-blog.csdnimg.cn/blog_migrate/e46d081ac95809b4938484b4b1b46bce.png)
![ddea74d74236ea07880d53bc435d3645.png](https://i-blog.csdnimg.cn/blog_migrate/7f5e03231a8130df1bbc5092a5ef6318.png)
![fdc967553551b8dbd2014229191df1f1.png](https://i-blog.csdnimg.cn/blog_migrate/d0d39883bf5ffcd7fe8855a474ee0230.png)
![28e393edf65bf0751a1196b2476d0960.png](https://i-blog.csdnimg.cn/blog_migrate/ccff1a4fba60670546bda924ad53d5cb.png)
![6a59c57d338bfed683d35615e057f76f.png](https://i-blog.csdnimg.cn/blog_migrate/5c12a88efaa02052a2532f3306be5739.png)
大家可以通过本教程动手尝试,以便更好的掌握本文细节。
如果大家在使用或者学习过程中有什么问题,可以在公众号界面内评论留言,我们可以一起探讨思路!
如果你喜欢凌志,请关注和转发此文给你的小伙伴吧,你的关注和转发是对我最大支持和鼓励!我定会竭力向大家分享更好的文章!推荐文章:
一文学会-使用MATLAB将仿真、试验数据可视化-附带源程序
MATLABSimulinkStateflow事件event和节点history的使用-实例分析
英雄联盟手游LOL-安卓-安装教程!!!
如何将Matlab/Simulink/Stateflow模型码编译生成C代码
一文学会使用示波器!简单易操作!20201018
仿真数据曲线图像模糊么?MATLAB通过6个漂亮的数学函数曲线展示解决成果
MATLAB设计自己的应用软件?人人可以用的办公软件-应用程序和文件打开软件及其源代码
设计自己的应用程序?MATLAB应用程序设计-电脑桌面小助手WorkODA10
身份证号码合法性算法及其MATLAB程序设计-程序篇
身份证号码合法性算法及其MATLAB程序设计-理论篇