OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 421|回复: 10

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

[复制链接]

  离线 

7

主题

51

帖子

0

精华

初级会员

Rank: 2

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

最佳答案

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

哈哈,已经解决了,网上没找到答案,自己认真思考后,发现了自己的一个小失误,终于解决了。
回复

使用道具 举报

  离线 

7

主题

51

帖子

0

精华

初级会员

Rank: 2

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

使用道具 举报

  离线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

  离线 

1

主题

4

帖子

0

精华

新手上路

Rank: 1

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

使用道具 举报

  离线 

29

主题

312

帖子

0

精华

高级会员

Rank: 4

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

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

使用道具 举报

  离线 

7

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

  离线 

3

主题

14

帖子

0

精华

新手上路

Rank: 1

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

使用道具 举报

  离线 

7

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2016-10-19
在线时间
29 小时
 楼主| 发表于 6 天前 | 显示全部楼层
本帖最后由 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的坐标值         % 更新坐标轴





回复

使用道具 举报

  离线 

14

主题

370

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1875
金钱
1875
注册时间
2013-6-27
在线时间
246 小时
发表于 6 天前 | 显示全部楼层
MATLAB R2008a认证过期了,楼主使用哪个版本,认证有效期到什么时候啊
让我们的思维驾驭在电的速度之上! 承接各种电子产品设计。 659396825
回复

使用道具 举报

  离线 

7

主题

51

帖子

0

精华

初级会员

Rank: 2

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

2016a,破解的
回复

使用道具 举报

  离线 

7

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2016-10-19
在线时间
29 小时
 楼主| 发表于 6 天前 | 显示全部楼层
Leeg2016 发表于 2017-10-23 17:51
能否把代码给我参考一下,谢谢。

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

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-21 18:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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