发明内容
本发明所要解决的技术问题是如何在最短的时间实现监控系统中实时数据压缩的高压缩率,也就是:
1)压缩比高,根据实时数据趋势的线型,采用自适应算法能发挥最大的压缩比;
2)压缩速度快,算法简单,计算量少。
为解决上述技术问题,本发明提供一种基于线型的过程数据有损压缩方法,其特征在于,包括以下步骤:
1)定义三种变化的数据趋势线型:直线型、抛物线型、反抛物线型作为可选的拟合函数;
2)根据实际数据的变化趋势,在运行时动态地调整拟合函数的表达式的形式。
前述的基于线型的过程数据有损压缩算法,其特征在于:在所述步骤2)中,具体步骤为:
21)对于每一个过程数据,分别使用三种变化趋势线型进行压缩,记录相关参数,直到三种变化趋势线型都不能继续压缩为止;
22)保留压缩率最大的拟合函数作为最终的压缩结果,记录压缩点的时间点、拟合值、拟合曲线参数;
23)进行新一轮的压缩。
前述的基于线型的过程数据有损压缩算法,其特征在于:在所述步骤1)中,拟合函数为
yt=ut+εt (1)
其中,yt是过程数据的值关于时间的函数,εt是噪音函数,ut=kta是关于时间t的函数,a是t的幂指数,k为t的系数,用于控制拟合曲线的形状,如果a>1则ut为抛物线,此时可以取a=2;如果1>a>0,则ut是反抛物线,此时可以取a=0.5;常规条件下取a=1则为ut=kt直线。
前述的基于线型的过程数据有损压缩算法,其特征在于:在所述步骤21)中,
1)根据实际需要,分别取ut=kta中a=2、1、0.5,则对应抛物线、反抛物线、直线三种不同线型的拟合曲线,对于第1个数据点,用所有的曲线形状的拟合函数去拟合它,在正常情况下所有的曲线都能顺利地拟合,所有的拟合函数继续第二个数据点的压缩;
2)第二个数据点到来时,将第一个数据点的通过的拟合函数去拟合第二个数据点,保证压缩误差在预定控制的范围内,如果拟合函数是直线函数则不能进行拟合,所以直线函数放弃,再依次用上一轮通过的点去拟合第二个数据点,将满足压缩误差条件的拟合函数继续保留,不满足的拟合函数舍去;
3)按照上述过程依次拟合接下来的数据点,至只剩下最后一个满足压缩误差条件的拟合函数停止;
4)用步骤3)仅剩下的拟合函数拟合下一个数据点,如果还能拟合就继续下一个点,否则就结束本轮压缩,记录相关参数以便还原,继续下一轮的压缩。
本发明的原理是:
在工业生产监控系统中,实时数据的变化一般有不同的趋势,所以本发明针对于这些不同的变化趋势采用相应拟合压缩方式。在分析了监控系统实时数据后,在一段待压缩的数据段内,大体上有如下几种变化趋势:直线型,抛物线型,反抛物线型。
其中直线型代表平稳变化,即相邻的两个实时数据差值始终保持不变;抛物线型代表变化逐渐增大,即相邻的两个实时数据之间的差值越来越大;反抛物线型逐渐减小,即相邻的两个实时数据之间的差值越来越小。
本发明所用的算法结构简单,实现的c语言函数简单,这样在程序运行实现起来,计算量比较少使得计算速度快,程序运行快。
传统的算法针对以上三种情况只是采用相同的方式如直线型进行拟合,如果要求算法能够取得更好的压缩效果,必须能根据实际数据的变化趋势在运行时动态的调整拟合函数的表达式的形式。在本发明中,假设拟合函数是
yt=ut+εt (1)
其中,yt是过程数据的值关于时间的函数,εt是噪音函数,ut=kta是关于时间t的函数(a是t的幂指数,k为t的系数),用于控制拟合曲线的形状,如果a>1则ut为抛物线,此时可以取a=2;如果1>a>0,则ut是反抛物线,此时可以取a=0.5;常规条件下取a=1则为ut=kt直线。
1、在压缩时,对于直线型趋势的数据,本发明和传统算法一样都用直线来进行拟合;
2、对于抛物线型ut=kt2,k>0的数据,假设成这一趋势的过程数据点为y1,y2,y3…yi…yn,且此时y1到yn符合函数式(1),所以yi的坐标(ti,kti 2+b)其中k>0,k、b为系数,如果用本发明的抛物线来拟合,则y1,y2,y3…yi…yn只需保存为一个事件即可,如果采用传统的算法,如直线来拟合,当在压缩完y1,y2,y3…yi点,下一个待压缩的点为yi,此时斜率
所以 如此时在压缩完yi,直线的斜率已经不能再增大了,那么采用直线拟合必须进行新一轮的压缩,所以传统算法存储的时间数至少两个或者两个以上的事件。
3、对于抛物线型ut=kt2,k<0的数据,假设成这一趋势的点为y1,y2,y3…yi…yn,且此时y1到yn符合函数式(1),所以yi的坐标(ti,kti 2+b)其中k<0,那么如果用本发明的抛物线来拟合,则y1,y2,y3…yi…yn只需保存为一个事件即可,如果采用传统的算法,比如直线来拟合,当在压缩完y1,y2,y3…yi点,下一个待压缩的点为yi+1,此时斜率
所以 如此时在压缩完yi,直线的斜率已经不能再减小了,那么采用直线拟合必须进行新一轮的压缩,所以传统算法存储的时间数至少两个或者两个以上的事件。
综上所述,本发明的基于线型的过程数据有损压缩算法不采用单一的拟合方式,而是综合三种拟合方式,所以存储的事件数比传统算法存储的事件数少,即压缩率比较大。
具体实施方式
本发明的实际算法中为了控制压缩的阈值即压缩误差,仍然用上下两对曲线控制每一轮的压缩,如图4所示,以数据点1为起始点。在垂直方向上距离数据点1为E的地方有两个支点。每个元素对应两个连接支点和过程数据的直线或曲线,把这两个直线或曲线看成两扇虚拟的以支点为轴的“门”。具体包括以下步骤:
1)根据实际需要,可以分别取a=2,1,0.5,则对应着三种不同线型的拟合曲线(抛物线、反抛物线、直线)。对于第一个过程数据点,用所有的曲线形状去拟合它,在正常情况下所有的曲线都能顺利地拟合,所有的拟合函数继续第二个数据点的压缩;
2)第二个数据点到来时,将通过第一个数据点的拟合函数去拟合,保证压缩误差在预定控制的范围内。如图4,如果拟合函数是直线函数不能进行拟合了,所以直线函数放弃,再依次用上一轮通过的点去拟合第二点,将满足压缩误差条件的拟合函数继续保留,不满足的拟合函数舍去。
3)按照上述过程依次拟合下面的点,至只剩下最后一个数据点满足压缩误差条件的拟合函数停止;
4)用步骤3)仅剩下的拟合函数拟合下一个过程数据点,如果还能拟合就继续下一个点,否则就结束本轮压缩,记录相关参数以便还原,继续下一轮的压缩。
在数据还原时,根据在压缩算法中每一轮的压缩所记录的事件的信息,包括压缩点的时间点、压缩点的拟合值、压缩点的拟合曲线参数,然后再利用函数将原来的点还原出来。
以上已以较佳实施例公开了本发明,然其并非用以限制本发明,凡采用等同替换或者等效变换方式所获得的技术方案,均落在本发明的保护范围之内。