问题描述
在GUI中接收串口数据,并绘制实时的曲线;
但是发送数据变化后,刚开始能在曲线上体现出来,几秒钟过去就出现卡顿延迟;越往后越卡。
关键词:
MATLAB、GUI、画图、实时曲线、延迟、解决方法问题分析和方法尝试
开始曲线变化流畅,越往后延迟越大,说明往后MATLAB储存数据太多导致的;
尝试每次画少一些点,是否可以解决问题;
结果开始显示时好一点,但是还会很快的卡顿和增大延迟。网上有人建议改:主页→预设→常规→Java堆内存,调大一些;
感觉结果没有变化。是不是电脑性能不好?
应该不是,毕竟是台式机,平时用起来很顺手,画个简单的图应该没问题。网上查找结果
网上有不少人遇到相同的问题,比如这个:

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

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

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

说是没加分号:

分析一下:
不愿说原因的那哥们说是失误,这里发现说是分号忘了加,很有可能说的是同一个原因!
我赶紧检查了一下自己的分号有没有少,结果发现没有问题……我猜想可能某种情况下,延迟是由分号导致的,我没见过,我这里也不是分号的问题……
同样,下面说的方法也可能只适用于某种特定的情况,希望能至少给一小部分人帮助。发现解决方法
再后来反复见到一个经典的例程,最后一次浏览时,在这个例程中注意到这句话:

参考: 用matlab实时读取串口数据并动态显示曲线 -luckpl
EraseMode是什么?
当然我不会直接复制MATLAB help里面的,虽然一大堆英文看起来很有逼格……
按照个人目前的不入流水平,觉得很多MATLAB问题中文网页都能解决差不多了。
normal方式很容易理解,重新绘图,但较慢!默认是normal方式。
none方式不做任何擦除,在原来图形上绘制,会出现覆盖和重叠的效果:

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

background 方式把旧对象的颜色变为背景色,这个好理解,但是下面这句:这种方式影响被擦除对象下面的对象?不太懂。
我试了一下background模式,和xor模式显示上没有区别,可能是,只要不全部重新刷新,就能满足实时性要求。
根据我不求甚解的性格,我才不关心background到底有什么用呢……
结语
中秋节快乐!
最后
以上就是幸福大树最近收集整理的关于解决MATLAB绘图延迟问题的一种方法的全部内容,更多相关解决MATLAB绘图延迟问题内容请搜索靠谱客的其他文章。
发表评论 取消回复