大量数据曲线图显示问题
时间:10-02
整理:3721RD
点击:
最近在做一个数据采集控制系统,采用的是51作为下位机采集数据,每组数据包括3种(比如温度、湿度、伸长量),通过串口上传数据到PC,用LABVIEW编写上位机软件,用XY图显示2种数据的实时曲线(比如温度、湿度曲线),采集时间短,程序一切正常,采集时间一长,机器就会反应非常迟钝(采集频率大约为30Hz左右),从阮奇桢的《我和LabVIEW》中得到启示,我现在感觉应该是显示大量数据导致的程序效率低下,书中给的方法是“数据重采样压缩”,但没有给出具体操作方法,是不是要通过数组操作进行,还是LABVIEW本身就有现成的VI?另外,即使通过数组操作重采样了,随着数据量的变化重采样这个过程是要反复一直进行的,我理解要反复从存储区读出所有数据进行重采样,这样内存是不是也是消耗很大?如果我的想法不对,遇到这种问题应该怎么解决,新手,请各位不吝赐教,给出个思路即可,谢谢。
下图是我程序中曲线显示部分和阮奇桢的《我和LabVIEW》中的相关说明,因为程序比较大和无法演示(需要配合下位机),就不上传了。
下图是我程序中曲线显示部分和阮奇桢的《我和LabVIEW》中的相关说明,因为程序比较大和无法演示(需要配合下位机),就不上传了。
文中提到的采样压缩就是对你当前的大数据数组进行选择性删除,个人知道的方法有两种。一种是间隔性删除,类似于图像像素处理,就是根据自己每个多少个数据删除元素,这样图像总体不是失真,细节会损失;第二种,当数据量太大时其实我们要显示的X坐标往往都不会设为自定义,而是一个固定范围的值,就可以删除不显示的部分,这种方法及时数据放大也不会失真,但是数据会缺失一部分。
谢谢“风卷雪”的回答,我的数据不能删除,因为有些客户是需要导出原始数据的,对于数据点客户一般是多多益善,所以我的总体思路是所有点都进行存储,但是选择性的显示,另外,就是X、Y坐标的问题,允许在数据采集过程中用鼠标进行框选放大(这个功能我已编程实现),单就这个功能说,原始数据也不能丢失,因为在放大显示时,可能会放大到极致,这个时候就会放大到某个点。所以,我认为是所有数据点都进行存储,有选择的进行显示,但是具体思路有些拿不准,想听听各位高见。
建议选择性显示,比如只显示最近二分钟的数据,这样只把最近数据剪下来就可以了。否则随着的时间增加卡死是必然的啊。
显示和保存数据是两个事情,显示的数据少和保存的数据是两个概念。
重采样感觉没必要,因为如果数据多到需要靠重采样来减少资源消耗的程度,估计图片显示的曲线已经密到看不出有用的信息来了。