失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Matlab GUI animatedline 串口实时

Matlab GUI animatedline 串口实时

时间:2019-03-25 01:56:19

相关推荐

Matlab GUI animatedline 串口实时

Matlab GUI (使用 animatedline 对象)

最近在用Matlab的GUI做串口数据的实时显示,做的还不是很成熟,在做实时显示使用了 animatedline 函数进行实现的。现在还存在着很多的问题,先把一个问题po上来。(本人菜狗,也刚学没多久,有问题的话多多指教)

h1 = animatedline('Color','r');h2 = animatedline('Color','b');x=1:10;y1=sin(x);y2=cos(x);for i = 1:2for j=1:5addpoints(h1,x(j+5*(i-1)),y1(1,j+5*(i-1)));addpoints(h2,x(j+5*(i-1)),y2(1,j+5*(i-1)));drawnow;endend

该类实现方法可以多次循环,面对GUI上多个坐标轴内的数据需要反复绘制时,不会出现波形中有断开的问题(循环前后中间无法连接的问题)

而一开始我用的是直接用一行代码代替顺序执行,但是一直出现波形断开的问题,例如这样的代码addpoints(h(n),x(j+5*(i-1)),y2(1,j+5*(i-1)));

for i = 1:2for j=1:5addpoints(h(i),x(j+5*(i-1)),y(1,j+5*(i-1)));drawnow;endend

但这样编的话,x=5与x=6处的点没有连接到,波形呈现断开的状态(简略写了一下,有点忘了当时是怎么写的来着)

总结

最后试了直接将h1,h2各写一遍来实现(第一个程序),但出现了再次读取数据再次进入该循环时候,两次循环数据的尾与头仍无法相连的问题。

搜了无数教程发现,一般是将数据全添加进去再进行画图的,例如:

h1 = animatedline('Color','r');h2 = animatedline('Color','b');x=1:10;y1=sin(x);y2=cos(x);for i = 1:10addpoints(h1,x(i),y1(i));addpoints(h2,x(i),y2(i));drawnow;end

此处的数据是从一开始到结尾,就不会存在断开的问题,在GUI试了一下,再次循环还是从一开始到最后,暂时好像速度还可以,就先用这个试试了,不太明白具体机制是什么。

如果觉得《Matlab GUI animatedline 串口实时》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。