一种基于最小二乘线性拟合的实时数据压缩方法

文档序号:6556592阅读:228来源:国知局
专利名称:一种基于最小二乘线性拟合的实时数据压缩方法
技术领域
本发明涉及一种基于最小二乘线性拟合的实时数据压缩方法,特别是适用处理采自工业现场处理大容量的实时数据。
背景技术
工业现场的实时数据往往具有总量巨大、数据流量突发性高等特点,对于一些典型的上层应用软件,比如实时数据库软件、先进控制软件等,如何保存为数众多采样点的实时数据以及如何快速访问这些保存的历史数据一直是个难题。考虑到数据总量过于庞大,如果简单地将所有的数据都保存下来,不仅占用大量的物理存储空间,同时也使得以后在检索特定时间的历史数据的时候效率大大下降。
传统意义上的数据压缩多指无损数据压缩,这些压缩方法可以保留数据的全部细节,同时能够在很大程度上减少数据所占用的物理存储空间。但是在后续的数据检索中,需要占用大量的处理器时间来将这些数据进行解压缩,导致检索历史数据时候的效率可能更加低下,因此在工业控制领域,此种方法一般不被采用。
考虑到采集自工业现场的实时数据都是基于时间序列的数据,这些数据具有时间属性,但是其时态关系不像时态数据库系统那样复杂,其时间是序列化的。实际上在现场应用中,那些在较小范围内变化的数据可能是用户不关心的,用户可能仅仅需要关注某些变化剧烈的拐点数据。数据压缩完全可以通过采用丢弃一些数据的方法来减少对存储资源的需求,只要这些被丢弃的数据在一定的误差范围内不影响过程历史数据的重构。目前此类压缩方法包括旋转门压缩法、杜邦矩形后向斜率法等。
在旋转门压缩法中,当系统接收到一个新数值时,只有当自上次记录数值以来的某一数值不在压缩范围之内,才会记录前一数值。这一偏差范围呈一个平行四边形,上、下两边分别是上次记录的数值和一个新的数值,宽等于规定的压缩偏差的两倍。通过斜率比较的方法可以确定一个点是否在误差形成的趋势区域中,从而确定是否是关键点,是否需要存储。实际应用和测试结果表明,旋转门压缩算法在处理多数现场实时数据时是有效的,可以达到比较高的压缩比,但是在处理那些趋势呈非线性变化位号数据时效果不是特别理想,尤其是对于那些在一段时间内如果出现变化率本身有较大波动的数据压缩效果不好。

发明内容
本发明的目的在于提供一种基于最小二乘线性拟合的实时数据压缩方法,它能在保证数据压缩效率的前提下最大限度地利用线性插值恢复数据,并且通过引入数据预处理机制来抑制现场的噪声干扰。
本发明的目的是这样实现的基于最小二乘线性拟合的实时数据压缩方法,其特征是包括以下步骤1)压缩间隔过滤将采自工业现场的当前实时数据的时间戳和前一个采集数据的时间戳比较,如果其中的时间间隔小于用户指定的最小阀值,则将该值忽略;如果其中的时间间隔大于用户指定的最大阀值,则保留该点不再进行后续的压缩;2)数据预处理对采自工业现场的实时数据进行噪声选通和滤波处理,其中噪声的选通是通过指定一个最小的门槛值来确定的,并设定1%~10%的死区带,如果低于最小的门槛值则将实时值看做零,然后根据用户配置有选择地对指定采样点的采集数据进行滤波处理,滤波计算公式如式(1)y(k)=αy(k-1)+(1-α)x(k)(1)式中y(k)是本次滤波后的结果值,y(k-1)是上一次滤波的输出结果,x(k)是本次采集尚未经过滤波的实时数据,α是滤波系数并且满足0<α<1;3)压缩偏移过滤系统将经过步骤1)和步骤2)处理后的数据保存到基于内存的历史数据缓冲区,如果此时内存历史数据缓冲区中的数据等于或少于两个,则不需要执行下一步的偏移过滤,如果内存历史数据缓冲区里的数据多于两个则需要以目前在缓冲区中的所有数据点为样本,以最小二乘线性拟合的方法构建起一条拟合直线y=α0+α1x,其中,a1=Σi=1mXiYi-X‾Y‾Σi=1mXi2-mX‾2]]>α0=Y-α1X式中的Xi和Yi分别表示内存历史数据缓冲区中的点的时间戳和实时值,X和Y分别是在内存历史数据缓冲区中所有点的时间戳和实时值的平均值,m是内存历史数据缓冲区中点的个数;然后分别测量每个样本点到该直线的距离,一旦检测到有一个点的距离大于用户配置的最大压缩偏移量就保留该点,如果该点正好是起始点,则保留起始点之后的一个点;4)利用保留在内存历史数据缓冲区的点作为下一次数据压缩的起点,继续在内存历史缓冲区中对剩余的采样点进行压缩偏移过滤处理,一直到剩余的点构建出来的拟合直线和所有的样本点的距离都小于用户配置的最大压缩偏移量为止。
本发明的有益效果在于本发明方法在处理实时数据压缩的时候采用了利用最小二乘线性拟合的方法动态构建拟合直线,可以克服类似旋转门算法中仅仅使用前后两个点构建直线的缺陷,这样应该可以在以后的数据恢复最大限度上利用线性插值来取得数据,能够在保留数据曲线特征的前提下大大减少需要保存的数据量,具有很高的实际应用价值。


图1为本发明方法的流程图;图2为某个位号的原始值曲线;图3为基于本发明数据压缩方法得到的效果图;图4为旋转门压缩方法得到的效果图。
具体实施例方式
以下结合附图对本发明作进一步的说明。
根据图1所示,首先取得采自工业现场的实时值,每个实时值都有一个时间戳表明该数据在采集时刻的确切时间。第一步首先对这个实时值进行压缩间隔过滤,其公式为Δt=t(k)-t(k-1)式中Δt是时间间隔,t(k)和t(k-1)分别是本次采样时间戳和上一次采样的时间戳,如果计算出来的Δt小于用户设定的最小阀值则该数据将被忽略,继续处理下一个采集上来的数据。而如果Δt大于用户设定的最大阀值则该数据将立刻被保存到数据存档文件中,同时在内存历史数据缓冲区中所有的样本都被丢弃,该数据同时被写入内存历史数据缓冲区作为下一轮压缩的起始点。
接着对经过压缩间隔过滤的实时值进行预处理,预处理包括噪声选通和数据滤波。
其中噪声选通主要是为了过滤仪表的随机误差对测量值的干扰,首先将实时值和用户指定的门槛值进行对比,如果发现该值小于门槛值则认为该值实际上是零,则直接将其置为零处理。为了减少在此门槛值附近的波动,需要设定一定范围的死区带,一般可以取1%~10%。其中死区判断的公式可以表示如下Δp=x(k)-x(k-1)]/(Xh-Xl)式中Δp是死区,x(k)和x(k-1)分别是当前时刻的测量值和上一次的测量值,Xh和Xl分别是该测量值的上限和下限。如果计算发现Δp的值小于用户指定的死区范围,则认为位号数据的变化在死区范围内,可以忽略本次采样值。
接着可以根据用户配置对指定采样点的数据进行滤波处理以进一步减少噪声对数据的影响提高压缩效率,一般常用的是惯性滤波,其计算公式如下y(k)=ay(k-1)+(1-α)x(k)式中y(k)是本次滤波后的结果值,y(k-1)是上一次滤波的输出结果,x(k)是本次采集来尚未经过滤波的实时数据,式中α是滤波系数并且满足0<α<1。当α→1的时候则惯性越大,即越接近上一次的处理后的值,当α→0的时候则惯性越小,即越接近本次采集的实时值。
一般而言,取α的值在0.2以下,如果取得很大可能导致惯性过大,即使后面的值变化很快也很难立刻显现出来。
在经过数据预处理以后,就可以对数据进行压缩偏移的测试,其具体的方法如下首先考察内存历史数据缓冲区中的样本点的数量,如果数量小于或等于二则直接返回,不再继续测试。如果发现数量大于二,则利用最小二乘线性拟合方法构建一条拟合直线y=α0+α1x,其中,a1=Σi=1mXiYi-X‾Y‾Σi=1mXi2-mX‾2]]>
α0=Y-α1X式中的Xi和Yi分别表示内存历史数据缓冲区中的点的时间戳和实时值,X和Y分别是在内存历史数据缓冲区中所有点的时间戳和实时值的平均值,m是内存历史数据缓冲区中点的个数;利用以上公式可以迭代计算出一条拟合直线,然后就可以计算各个点到该曲线的距离了,假设有一个样本点其坐标为(x0,y0),距离可以根据以下公式计算出来d=|y0-a1x0-a0|a12+1]]>式中的α1和α0就是拟合直线中的参数,x0和y0是任一采样点的时间戳和实时值,反映到数据压缩中,x坐标就是时间轴,y坐标就是位号经过预处理以后的实时值。
利用以上公式能够计算出在内存历史数据缓冲区中每一个样本点到该拟合直线的距离,然后和用户所设置的最大压缩偏移进行对比,一旦发现第一个距离超过最大压缩偏移的样本点,即可以停止对比,然后将该样本点写入到存档文件,清空当前的内存历史数据缓冲区并且将该点作为下一次压缩的起始点重新写入到缓冲区。如果对比了内存历史数据缓冲区中所有的样本点,发现其与拟合直线的距离均小于用户所设置的最大压缩偏移则认为目前所有的数据均可以通过插值方式得到恢复,因此继续进行下一轮的压缩,新加入的点被作为样本保留在内存历史数据缓冲区中以供下一次计算使用。
当执行完以上步骤后,将继续考察下一个采自工业现场的实时值,重复上述过程。
为了更好说明本发明的方法在数据压缩率方面的优势,采用仿真的方式对一段数据利用本发明的方法和旋转门算法分别进行压缩,然后进行比较。
本次仿真中总共使用了一个测量点的600点实时数据,由于是仿真所以并未涉及到压缩时间间隔的过滤,旋转门压缩方法和本发明的方法所采用的最大压缩偏移均是10%,即测量点上下限制之差的十分之一。
在图2中给出了该测量点未经过压缩的原始数据曲线,可以发现未经过压缩处理的数据相当的庞大,曲线形状较好地表现了测量点数据的变化趋势。图中的横向坐标轴是时间轴,其含义为该点的时间戳,纵向轴是数值轴,表明该点的实时值,图中的圆点表示采集点。
图3和图4分别给出了基于本发明的数据压缩方法得到的效果和应用旋转门压缩方法得到的效果,进行对比很容易发现图4中比图3中的圆点要少很多,也就是说基于同样的最大压缩偏移量,本发明的数据压缩方法能够更大限度地压缩数据,在保持曲线基本形态的基础上需要保留的数据点比旋转门方法要少的多,有更高的压缩率。
权利要求
1.一种基于最小二乘线性拟合的实时数据压缩方法,其特征是包括以下步骤1)压缩间隔过滤将采自工业现场的当前实时数据的时间戳和前一个采集数据的时间戳比较,如果其中的时间间隔小于用户指定的最小阀值,则将该值忽略;如果其中的时间间隔大于用户指定的最大阀值,则保留该点不再进行后续的压缩;2)数据预处理对采自工业现场的实时数据进行噪声选通和滤波处理,其中噪声的选通是通过指定一个最小的门槛值来确定的,并设定1%~10%的死区带,如果低于最小的门槛值则将实时值看做零,然后根据用户配置有选择地对指定采样点的采集数据进行滤波处理,滤波计算公式如式(1)y(k)=ay(k-1)+(1-a)x(k)(1)式中y(k)是本次滤波后的结果值,y(k-1)是上一次滤波的输出结果,x(k)是本次采集尚未经过滤波的实时数据,a是滤波系数并且满足0<a<1;3)压缩偏移过滤系统将经过步骤1)和步骤2)处理后的数据保存到基于内存的历史数据缓冲区,如果此时内存历史数据缓冲区中的数据等于或少于两个,则不需要执行下一步的偏移过滤,如果内存历史数据缓冲区里的数据多于两个则需要以目前在缓冲区中的所有数据点为样本,以最小二乘线性拟合的方法构建起一条拟合直线y=a0+a1x,其中,a1=Σi=1mXiYi-X‾Y‾Σi=1mXi2-mX‾2]]>a0=Y-a1X式中的Xi和Yi分别表示内存历史数据缓冲区中的点的时间戳和实时值,X和Y分别是在内存历史数据缓冲区中所有点的时间戳和实时值的平均值,m是内存历史数据缓冲区中点的个数;然后分别测量每个样本点到该直线的距离,一旦检测到有一个点的距离大于用户配置的最大压缩偏移量就保留该点,如果该点正好是起始点,则保留起始点之后的一个点;4)利用保留在内存历史数据缓冲区的点作为下一次数据压缩的起点,继续在内存历史缓冲区中对剩余的采样点进行压缩偏移过滤处理,一直到剩余的点构建出来的拟合直线和所有的样本点的距离都小于用户配置的最大压缩偏移量为止。
2.根据权利1所述的基于最小二乘线性拟合的实时数据压缩方法,其特征是拟合直线到样本点距离的计算公式如式(2)d=|y0-a1x0-a0|a12+1---(2)]]>式中的a1和a0就是拟合直线中的参数,x0和y0是任一采样点的时间戳和实时值。
全文摘要
本发明公开了一种基于最小二乘线性拟合的实时数据压缩方法。该方法针对工业现场采集的实时数据数据量巨大并且存在大量噪声干扰和冗余数据等情况,首先通过对采自工业现场的实时数据进行预处理,然后将处理过的数据存入内存历史数据缓冲区,并且以保存在缓冲区中的数据为样本动态构建最小二乘线性拟合直线,通过测量缓冲区中所有点到该拟合直线的距离并对比用户指定的最大压缩偏差来判断是否需要保留数据点。本发明方法完全满足工程应用的需求,能够在保留数据曲线特征的前提下大大减少需要保存的数据量,具有很高的实际应用价值。
文档编号G06F17/00GK1866241SQ200610052068
公开日2006年11月22日 申请日期2006年6月21日 优先权日2006年6月21日
发明者叶建位, 苏宏业, 古勇, 邹骁 申请人:浙江中控软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1