您的位置:首页 > 编程语言 > MATLAB

解决MATLAB绘图延迟问题的一种方法

2017-10-05 20:50 2151 查看
问题描述

在GUI中接收串口数据,并绘制实时的曲线;

但是发送数据变化后,刚开始能在曲线上体现出来,几秒钟过去就出现卡顿延迟;越往后越卡。

关键词:

MATLAB、GUI、画图、实时曲线、延迟、解决方法

问题分析和方法尝试

开始曲线变化流畅,越往后延迟越大,说明往后MATLAB储存数据太多导致的;

尝试每次画少一些点,是否可以解决问题;

结果开始显示时好一点,但是还会很快的卡顿和增大延迟。

网上有人建议改:主页→预设→常规→Java堆内存,调大一些;

感觉结果没有变化。

是不是电脑性能不好?

应该不是,毕竟是台式机,平时用起来很顺手,画个简单的图应该没问题。

网上查找结果

网上有不少人遇到相同的问题,比如这个:



但是这个哥们很有意思,不知道发现了什么失误,也不说原因和结果,直接说问题解决了,就再也看不到身影……



留下了一群懵逼的表情……



继续找到了这个,问题描述一样:



说是没加分号:



分析一下:

不愿说原因的那哥们说是失误,这里发现说是分号忘了加,很有可能说的是同一个原因!

我赶紧检查了一下自己的分号有没有少,结果发现没有问题……

我猜想可能某种情况下,延迟是由分号导致的,我没见过,我这里也不是分号的问题……

同样,下面说的方法也可能只适用于某种特定的情况,希望能至少给一小部分人帮助。

发现解决方法

再后来反复见到一个经典的例程,最后一次浏览时,在这个例程中注意到这句话:



参考: 用matlab实时读取串口数据并动态显示曲线 -luckpl

EraseMode是什么?

当然我不会直接复制MATLAB help里面的,虽然一大堆英文看起来很有逼格……

按照个人目前的不入流水平,觉得很多MATLAB问题中文网页都能解决差不多了。



normal方式很容易理解,重新绘图,但较慢!默认是normal方式。

none方式不做任何擦除,在原来图形上绘制,会出现覆盖和重叠的效果:



根据上面xor方式的描述,这种方法既可以绘制新画出来的曲线,也不会全部刷新导致延迟严重,这样的话就保证了实时性。



background 方式把旧对象的颜色变为背景色,这个好理解,但是下面这句:这种方式影响被擦除对象下面的对象?不太懂。

我试了一下background模式,和xor模式显示上没有区别,可能是,只要不全部重新刷新,就能满足实时性要求。

根据我不求甚解的性格,我才不关心backgr
a3ab
ound到底有什么用呢……

结语

中秋节快乐!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: