OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6658|回复: 11

关于matlab串口接收数据实时画图延迟越来越大的问题?

[复制链接]

7

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2016-10-19
在线时间
36 小时
发表于 2017-5-19 15:50:29 | 显示全部楼层 |阅读模式
1金钱
我用MATLAB接收单片机发过来的数据,利用串口中断,来一次数据画一次图,做了一个实时曲线。另外我在里面定义了几个矩阵,随着时间的推移,矩阵越来越大。
现在遇到一个问题,就是刚开始一分钟曲线实时性非常好,但是慢慢的曲线的延迟越来越大,以至于后面速度越来越慢,我在想这个跟我的这些矩阵有关系嘛?需要释放内存啥的吗?有遇到过这种问题的网友没?

最佳答案

查看完整内容[请看2#楼]

哈哈,已经解决了,网上没找到答案,自己认真思考后,发现了自己的一个小失误,终于解决了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2016-10-19
在线时间
36 小时
 楼主| 发表于 2017-5-19 15:50:30 | 显示全部楼层
哈哈,已经解决了,网上没找到答案,自己认真思考后,发现了自己的一个小失误,终于解决了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-5-22 00:57:57 | 显示全部楼层
帮顶
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-7-28
在线时间
3 小时
发表于 2017-7-28 15:30:56 | 显示全部楼层
楼主可以分享一下代码吗?我用正点原子串口通信程序没法和MATLAB通信
回复

使用道具 举报

29

主题

311

帖子

0

精华

高级会员

Rank: 4

积分
747
金钱
747
注册时间
2016-5-21
在线时间
199 小时
发表于 2017-7-28 18:35:29 | 显示全部楼层
dmfy 发表于 2017-5-19 15:50
哈哈,已经解决了,网上没找到答案,自己认真思考后,发现了自己的一个小失误,终于解决了。

我觉得既然解决了,可不可以把到底什么失误说出来,万一别人也犯了同样的错误,看到你的帖子就得到了及时的帮助。  最郁闷的就是百度某个问题,发现别人也遇到过,不过回复里就是“已经搞定了,谢谢大家……”到底怎么搞定的娃
回复

使用道具 举报

7

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2016-5-9
在线时间
58 小时
发表于 2017-7-31 17:16:43 | 显示全部楼层
能不能把代码借我参考一下啊
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-9-28
在线时间
19 小时
发表于 2017-10-23 17:51:44 | 显示全部楼层
能否把代码给我参考一下,谢谢。
回复

使用道具 举报

7

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2016-10-19
在线时间
36 小时
 楼主| 发表于 2017-11-15 21:46:09 | 显示全部楼层
本帖最后由 dmfy 于 2017-11-15 22:03 编辑
haysen 发表于 2017-7-28 18:35
我觉得既然解决了,可不可以把到底什么失误说出来,万一别人也犯了同样的错误,看到你的帖子就得到了及时 ...

就是在上位机串口中断里面需要限制曲线长度,我每次都将接受到的数据写进一个数组,然后每次中断都利用数组画图,如果不限定这些数组的长度,那么到最后这数组会越来越大,自然就会越来越卡,限定后,只要数组长度超过限定值,抛弃数组第一个,将新数据放在数组尾部,这样就不会出现卡顿延迟了。
如: if (length(Xzhou)) >= 400               %% 限定坐标轴X的数组长度,   
Xzhou = Xzhou(1,2:end);                  %% 数组长度一旦超过400就丢弃第1列的值
  end
  if (length(YData_r)) >= 400
   YData_r =YData_r(1,2:end);
  end
其中 Xzhou、YData_r 都为数组,在定义的时候
Xzhou=(0);         %% 初始化,
YData_r=(0);       %% 初始化,

#############################################################

另外matlab里面的画图需要在串口中断外先用画好曲线L,然后在中断里面更新L对应的坐标系就可以了,每次在中断里面都用plot一遍的话,也是会越来越卡的。
中断外:L1=plot(handles.Axes,Xzhou,YData_r,'r','MarkerSize',0.1,'LineWidth',0.05);  % 先画图
中断里面:set(L1,'XData',Xzhou,'YData',YData_r);  %% 定义XY的坐标值         % 更新坐标轴





回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-11-15 21:50:12 | 显示全部楼层
MATLAB R2008a认证过期了,楼主使用哪个版本,认证有效期到什么时候啊
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

7

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2016-10-19
在线时间
36 小时
 楼主| 发表于 2017-11-15 21:56:42 | 显示全部楼层
DongInker 发表于 2017-11-15 21:50
MATLAB R2008a认证过期了,楼主使用哪个版本,认证有效期到什么时候啊

2016a,破解的
回复

使用道具 举报

7

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2016-10-19
在线时间
36 小时
 楼主| 发表于 2017-11-15 21:57:38 | 显示全部楼层
Leeg2016 发表于 2017-10-23 17:51
能否把代码给我参考一下,谢谢。

网上一大堆,8楼是解决卡顿的方法
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-4-17
在线时间
1 小时
发表于 2018-4-17 13:09:26 | 显示全部楼层
dmfy 发表于 2017-11-15 21:46
就是在上位机串口中断里面需要限制曲线长度,我每次都将接受到的数据写进一个数组,然后每次中断都利用数 ...

对楼主把画图放在中断外比较好奇。
楼主是在初始化时候先给了数组初始值么?
在中断外画图,然后中断中只更改数据的不画图的话不是图像也不会更新了么?只是数据在不停刷新
想要降低画图的延迟,麻烦楼主解答一下啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 23:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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