基于数据压缩算法(通用12篇)
基于数据压缩算法 篇1
一、引言
随着信息技术和计算机技术的飞速发展, 人们面对的数据越来越多, 在数据储存和传输的过程中, 数据压缩[1]的地位越来越重要。一般来说, 数据压缩可以按压缩的失真度分为有损压缩和无损压缩[2]。有损压缩顾名思义就是把使用压缩技术后的数据进行解码还原, 得到的数据与之前的数据不是完全一样, 却不会使人们对原始资料引起错误的理解。有损压缩一般应用在压缩后的数据不一定要和原始数据完全一致的场合。无损压缩就是指把压缩后的数据进行解码还原, 得到的数据与原始数据一模一样, 没有改变。目前流行的无损压缩编码有哈夫曼编码、LZW编码、算术编码、行程编码等。
目前, 数字化和网络化正在给我们的生活带来翻天覆地的变化, 图像的数字化也将成为一个必然的趋势。占据我们大量存储空间和传输带宽的图像, 如果采用数字化处理, 会使得图像数据有如下优点: (1) 数字化处理后的图像容易储存而且方便处理, 不再是一块难嚼的鸡肋, 能够满足人们的各种需求; (2) 数字化处理后的图像在传输过程中容易传输且快速; (3) 数字化处理后的图像与原始图像一样高分辨率, 优质量; (4) 数字化处理后的图像更增强了稳定性和传输过程中的抗干扰能力。但是, 通常数字化后的图像仍然面临着对海量数据的存储与传送问题。所以, 在计算机的存储空间和信道有限的条件下, 怎样高质量、高效率地对数字化后的图像进行可靠压缩成为计算机技术的热门研究领域。
Lempel-Ziv-Welch (LZW) 编码就是一种主要用于图像数据压缩的算法。这种算法对一些简单平滑的图像和一些噪声小的数据具有比较高的压缩比, 而且本算法有比较快的压缩和解压缩速度。本文主要介绍了LZW算法, 并给出了一个编码实例, 通过实验结果可以证明这是一种有效的数据压缩方法。
二、LZW算法
LZW算法是在数据压缩经典算法LZ77和LZ78二者的基础上改进而成的, 由Terry Welch于1984年提出[3,4]。
LZW算法在开始压缩之前, 字典中只有单个字符和编码的串表。开始压缩时, 读入字符串, 按一定的顺序与字典中已包含的字串进行匹配, 如果能够匹配成功, 则将匹配好的字符串对应编码输出;如果不能进一步匹配, 则将导致匹配失败的字符与之前的字符串合并在一起, 加入串表并给以相应编码。
LZW算法的串表具有前缀性[5], 即表中任何一个字符串的前缀字符也在串表中。也就是说, 如果由某个字符串P和某个单字符C所组成的字符串PC在表中, 则P也在表中。C叫作前级串P的扩展字符。
LZW算法与LZ78算法有着相似的编码和解码过程。这两种算法的主要区别在于进行编码时, 因为在压缩时, 字典中已经包含有每个单字符及其编码的串表, 所以在LZW算法的码字中省略了LZ78算法的码字中关于未匹配字符这项, 只是含有已经匹配成功的字符串的索引值, 由此来降低LZW算法的码字的长度以便提高数据压缩比;解码时, 由于表中需要的未匹配字符要在解压缩下一个输入码字后才可以获得, 因此建表的过程相对于压缩时要推迟一步。
三、LZW算法实例
本文使用VC来编译代码和制作界面。
在压缩开始时, 首先要对存放字符串的hash表、结束标志、清除标志、输入/输出缓冲的位置进行初始化。必须使hash表不是空值, 从0开始记输出缓冲位。需要定义前缀字符串Old和当前读入字符Pixel。如果Old+Pixel字符串存在hash串表当中, 就从中取出该字符串的索引编号Index。
部分代码可表示为:
如果Old+Pixel字符串不在hash串表当中, 就把Old+Pixel字符串添加到String Table编码表。
部分代码可表示为:
进行压缩完成后要清除hash表。在数据解码过程中, hash串表能依据原始字典和Index再次生成。
数据的解压缩过程其实是压缩的逆过程。首先还是必须对字符串表、清除标志、结束标志和输入/输出进行初始化。需要定义前缀字符串Old和当前读入字符Pixel (当前输入的经压缩后的字符) 。如果Code既不是清除标志也不是结束标志时, 算法进行数据解码工作。
部分代码可表示为:
进行解码完成后, 要清空m_pStrBegin指针, 即清空指向String Table表的指针。
下面我们采用一个示例图像, 使用本文的LZW算法来进行压缩。原始图像zuoye如图1所示, 是一个大小为486 Byte, 宽度和高度均为12像素的彩色图像。本文用VC做的界面图, 选择zuoye为压缩文件后, 单击编码按钮就可进行压缩操作。压缩结果如图2所示。
图2压缩结果图
从图2可知, 原文件大小为486字节, 利用LZW算法进行压缩后为132字节, 压缩率为27%。
四、结论
通过实验结果可以看出, 本文提出的算法是一种有效的无损数据压缩算法。许多学者一直在对LZW及其派生算法加以不断地改进和完善, 使之成为了当今数据压缩的主流算法。
参考文献
[1]David Salomon.吴乐南, 等.数据压缩原理与应用 (第二版) [M].北京:电子工业出版社, 2007.
[2]侯阳.数据压缩技术及C语言实例[M].北京:学苑出版社, 2005.
[3]张凤林, 刘思峰.一个改进的LZW数据压缩算法[J].小型微机计算机系统, 2010, 27 (10) .
[4]林小竹, 籍俊伟.一种改进的LZW压缩算法[J].计算机工程, 2009, 31 (14) .
[5]寇海洲, 夏江涛, 赵文东.LZW算法C语言实现及改进[J].淮阴工学院学报, 2007, (12) .
基于数据压缩算法 篇2
根据灰度图像信息量大、可视化效果好等特点,提出一种基于灰度图像水印的.空间域矢量地理空间数据水印算法,即先将灰度图像水印信息按一定法则进行处理,再将处理后的水印信息嵌入到空间域矢量地理空间数据中,最后对嵌入水印信息的矢量地理空间数据进行检测.文中还对矢量地理空间数据进行了攻击实验,分析表明,提取出的灰度图像水印具有较好的鲁棒性效果和一定的实用价值.
作 者:郭思远 朱长青 GUO Si-yuan ZHU Chang-qing 作者单位:郭思远,GUO Si-yuan(信息工程大学,测绘学院,河南,郑州,450052)
朱长青,ZHU Chang-qing(信息工程大学,测绘学院,河南,郑州,450052;南京师范大学,虚拟地理环境教育部重点实验室,江苏,南京,210097)
基于数据压缩算法 篇3
摘要:以压缩感知理论为基础,将匹配追踪(Matching Pursuit,简称MP)算法运用到图像的压缩编码中.首先,阐述了原子库的构建方法,之后,采用分块感知压缩图像分解方法,降低了分解的运算复杂度,最后,针对传统MP算法编码率不高的问题,利用MP原子能量与位置分布特点,对原子系数和位置参数进行编码,并提出了MP原子编码方法.实验结果表明,采用分块感知压缩图像分解方法,能有效地降低稀疏分解的计算复杂度,其压缩编码方法在保持传统MP图像编码优势的前提下,能有效地提高编码性能和编码率,体现了稀疏分解较传统分解方法的优势.endprint
摘要:以压缩感知理论为基础,将匹配追踪(Matching Pursuit,简称MP)算法运用到图像的压缩编码中.首先,阐述了原子库的构建方法,之后,采用分块感知压缩图像分解方法,降低了分解的运算复杂度,最后,针对传统MP算法编码率不高的问题,利用MP原子能量与位置分布特点,对原子系数和位置参数进行编码,并提出了MP原子编码方法.实验结果表明,采用分块感知压缩图像分解方法,能有效地降低稀疏分解的计算复杂度,其压缩编码方法在保持传统MP图像编码优势的前提下,能有效地提高编码性能和编码率,体现了稀疏分解较传统分解方法的优势.endprint
基于数据压缩算法 篇4
工业实时数据库广泛采用数据压缩技术。目前,压缩算法通常采用旋转门压缩算法、基于斜率比较的旋转门压缩算法和死区限值压缩算法[3,4,5]。其中,比较流行的是旋转门压缩算法[3,4,5],该算法是通过减少存储数值的数量来实现压缩,对于过程数值的压缩率有限且不适用于数据值分布不均匀的压缩场合。在国外,PI、ESP-iSYS、Industrial SQL Server和InfoPlus.21实时数据库采用的都是旋转门压缩算法,Intellution Dynamics iHistorian同时采用旋转门和死区限值两种压缩算法[6,7]。在国内,中国科学院软件研究所开发的Agilo实时数据库系统应用于海湾智能建筑组态管理系统和中国石油华北炼油厂生产管理系统中,采用基于斜率比较的旋转门压缩算法[7]。浪潮软件公司设计和开发的移动专用实时数据库LCMD (LangChao Mobile Database) 采用基于斜率比较的旋转门压缩算法[7]。
数据压缩技术面临两个关键问题:首先,压缩算法必须能够提供较高的数据压缩率以支持实时数据库海量存储的特点;其次,实时数据库的实时记录和查询功能要求压缩算法在压缩和解压缩两个过程都必须具有较好的速度性能,尤其在解压过程中[3]。这两个问题的解决是相互矛盾的,因此,在实时数据库中应用数据压缩技术必须找到两者恰当的平衡点。
在分析旋转门压缩算法和基于斜率比较的旋转门压缩算法原理的基础上,针对钢铁企业轧钢生产过程对实时数据库中数据压缩的要求,提出了比例压缩算法和改进的基于斜率比较的旋转门压缩算法。新算法是两者的结合,提高了数据压缩率和压缩/解压缩速度和性能。
1 基于实时数据库的数据压缩算法
1.1 常规旋转门压缩算法
旋转门压缩算法通过分析当前数据点与前一个被保留的数据点所构成的压缩偏移覆盖区来决定数据的取舍。实时数据库中的数据都是基于时间序列的数据,旋转门压缩算法是一种有损压缩,通过丢弃一些数据的方法来达到减少存储容量。这些被丢弃的数据在一定误差范围内必须不影响过程历史数据的重构[7]。
在旋转门数据压缩中,系统每接收到一个新值,都会和最近存储的测量值构造出一个有两条边同x轴垂直的平行四边形。这时,如果在新值和己存储值之间存在一个值v落在平行四边形外,则存储值v,否则就继续接收新值,没有任何数据点被保存。其中,平行四边形垂直方向的边长是压缩偏移量的两倍,压缩偏移量由用户设定,每个信号点均可以有自己的压缩偏移量,图1说明了旋转门压缩算法的原理。
旋转门压缩算法实现的流程见文献[3,4,5,7],其中,“临时数据集”指前一个被保留的数据点和新的数据点之间所有的数据点,这些数据点作为临时数据保存在内存中[7]。
该算法在实际应用中存在着明显的缺点:(1)无法事先确定“临时数据集”的容量大小,如果存在大量不需要压缩的数据会造成内存的极大浪费;(2)随着“临时数据集”变大,算法中“测试临时数据集内数据是否有不在平行四边形内”这个步骤的时间花销将以几何级数的速度迅速增长,成为系统性能的瓶颈。
1.2 基于斜率比较的旋转门压缩算法
斜率比较法同临时数据集法相比,只存储斜率最大和最小的数据值,新来的数据与上一个存储数据形成的斜率如果在最大和最小斜率之间,不用进行其他测试,否则,只需测试最大斜率和最小斜率的数据是否落在己存储数据和新数据形成的平行四边形内,从而决定存储前一个点(落在平行四边形外)或者继续接收新的数据点(落在平行四边形内)。
在图2中,数据点A是最近存储的点,它同点B、C、D形成直线的斜率分别为K、M、N。
(1) B点来到时,先把数据点B和斜率K缓存起来。
(2) C点来到时,测试B点是否落在由A和C构建的平行四边形内。因为B落在这个平行四边形内,接着比较斜率K、M,因为M>K,缓存数据点C和斜率M。
(3) D点来到时,测试现存斜率最大的C点是否落在由A和D构建的平行四边形内。因为C落在这个平行四边形之外,所以存储C点,同时缓存D和C、D形成的斜率P。
2 改进的基于斜率比较和比例旋转门压缩算法
2.1 比例压缩算法原理
计算机中的浮点数据类型一般采用四个以上的字节来表示,其表示范围将是一个非常大的浮点区间。而在钢铁企业轧钢生产线中实际采集得到的采样值的范围则相对较小。为了减少实时数据在归档文件中所占用的空间,新算法统一将所有浮点数标度为两个字节的整数。例如用(0,0)标识采样的最小值Vmin,(255,255)可用来标识采样的最大值Vmax,(Vbase,Vscale)则用来标识位于采样范围内的某个采样数值,其中Vbase,Vscale均为一个字节表示的整型数据,Vbase为分组的基数,Vscale为经比例压缩后得到的整型数据。与应用四个字节存储一个浮点数相比,将节省一半的存储空间。
比例压缩是通过存储数据与其所在区间段的比例来对采集到的数据进行压缩的算法。公式如下:
Vscale=INT[(V-Vmin)/(Vmax-Vmin)]×(2n) (1)
其中,Vscale为压缩后的结果值;V为测量值;Vmin为测量值的下限值;Vmax为测量值的上限值;INT为取整运算;n为压缩后数据所占用的bit数,这里用一个字节对数据进行存储。
在新算法中,压缩带来的数据最大失真比例为:
S=(Vmax-Vmin)/(Vmin×(2n) ) ×100% (2)
其中S为失真百分比,n为压缩后一个数据存储所占用的bit数目。
2.2 改进的基于斜率比较旋转门压缩算法原理
基于斜率比较的旋转门压缩在判断斜率最大与最小的两个数据点是否符合压缩要求时,主要通过以下两种方式:(1)判断斜率最大与最小点到当前数据点与上一个保存数据点所构成直线的距离是否小于压缩偏差(如图3a所示),这时每个新的数据点与上一个保存数据点构成的直线都不同,所以对每个数据点都需要执行两次判断。(2)利用新的数据点和给定的斜率偏差范围构造斜率区间(如图3b所示),这时在新的数据点来临时需要计算三个斜率:
K1=(V-M)/Δt (3)
K1=k-ΔC/Δt (4)
K2=k+ΔC/Δt (5)
其中,V:当前测量值;M:上一个存储值;ΔC:压缩偏移;Δt:两测量值之间的时间间隔。
当新计算的K1大于原有的K1时用新值替换旧值,当新计算的K2小于原有的K2时用新值替换旧值。如果K1<K<K2则可认为斜率最大与最小的数据点均符合判断条件,即仍在新构造的平行四边形内。
改进算法是改变构造斜率区间的时间点和角度,通过斜率最大点和斜率最小点来构造符合条件的斜率区间范围。同样需要计算两个斜率K3,K4:
K3=(Vkmax-(M+ΔC))/Δt (6)
K4=(Vkmin-(M-ΔC))/Δt (7)
其中,Vkmax:斜率最大点测量值;Vkmin:斜率最小点测量值。
判断点是否在平行四边形内的改进方式如图3c所示。对于新来的数据点,仍然计算当前测量值与上一个存储数值所构成的斜率K。如果K3<K<K4,则可认为斜率最大与最小的数据点均符合判断条件。这种判断方法与原有判断方法相比主要是将区域范围的构造移动到斜率最大与最小点上,这样就只需要在每个新数据点来临时计算一次斜率,而只有当新的斜率K不在区间[K3,K4]时才需要重新设置K3或者K4,并增加一次的判断。改进算法相对原来算法在新数据来临时减少了斜率的计算次数,从而加快了算法的执行速度。
2.3 新数据压缩算法处理步骤
新数据压缩算法处理步骤如下:
(1) 首先预设斜率的压缩偏差YBL;
(2) 存储第一个数据点,在第二个数据点到来时计算两者之间的斜率,并设最大斜率Kmax和最小斜率Kmin的值都等于第一个数据点与第二个数据点之间的斜率;
(3) 利用斜率最大与最小的数据点计算斜率K3和K4(第二次及以后调用的入口);
(4) 对新的数据点,计算K并判断,如果K3<K<K4当前测量值不用存储,但同时需要判断K是否在区间[Kmin,Kmax]内,如果Kmin>K则令Kmin=K,如果Kmax<K则令Kmax=K;
(5) 如果K不在区间[K3,K4]内,则保存当前测量值前一个时刻测试的数据值;
(6) 执行式(1)进行数据压缩,并写入缓冲区;
(7) 如果当前缓冲区满,则切换缓冲区。调用后台进程(或线程)将满缓冲区数据写入磁盘;
(8) 如果有新的数据到达,则转向步骤(3);否则返回。
3 压缩算法应用与测试分析
新数据压缩算法实现的软件应用于本钢集团公司热连轧厂1700热连轧机计算机过程控制系统。测试数据取自于1700热连轧机精轧机的压下量,测试压下电流数据量分别为100点、500点、1000点、1500点、2000点情况下采用本算法所得到的压缩时间、解压时间与压缩率。
3.1 数据压缩处理过程的整体测试
对压缩处理过程的测试内容包括压缩率、压缩时间、解压时间以及解压缩的正确性。测试中所用的数据采用了不同的表示方法。第一种是随机百分量,是在一定的量程范围内(整个量程范围的1%~2%)作随机振荡产生的。轧钢生产过程中产生的实时数据大都是这种类型的,比较具有代表性。第二种是正弦波百分量,即让数据的取值按正弦波的波形有规律地变化,正弦波的周期和振幅都可以自由地选定。为了接近轧钢生产过程数据的特点,将振幅定为量程范围的40%~45%,而周期则随着数据点数的大小变化。第三种是锯齿波百分量,即让数据的取值按锯齿波的波形变化。
压缩率的测试方法:数据采集得到的浮点类型数据占四个字节,因此源文件大小F1=D1×4,D1为数据点数;而压缩后的数据值占用了2个字节,所以压缩后的文件大小为F2=D2×2,D2为压缩数据点个数;压缩率为C=1-F2/F1。
压缩时间和解压缩时间的测试方法:在测试程序中对压缩和解压缩部分做500次循环,即测试出压缩和解压缩连续进行500次所需的时间tc500和td500,得到了压缩时间tc=tc500/500和解压时间td=td500/500。
解压缩正确性的测试:在解压缩完成后,将解压缩后的数据与压缩前的数据对比,如果误差在允许范围内,则表示解压正确。
为了保证系统中其他模块的正常运行,数据压缩模块占用CPU的时间不应该超过5%。由于轧钢生产过程控制系统采集数据的周期是秒级,则在一次压缩过程中最多有50ms的时间用来进行数据的压缩。如表1所示,数据的测试结果表明,数据压缩处理过程具有较高的压缩率和较好的实时性。
3.2 新算法与旋转门压缩算法性能的比较
1700热连轧机精轧机压下电流的数据如图4a所示,应用旋转门压缩算法解压缩如图4b所示,应用基于斜率比较的旋转门压缩算法解压缩如图4c所示,应用新压缩算法对数据进行数据压缩之后解压缩如图4d所示。从图4中可以看出,在保持数据恢复效果的情况下,新算法具有较高的压缩比。
表2的内容是新压缩算法与旋转门压缩算法对随机百分量进行压缩的性能综合比较。
由测试结果可以看出,新的压缩算法优于常规的旋转门压缩算法:
(1) 压缩率提高了一倍 旋转门压缩算法对于仿真数据的压缩率在30%-40%,而新压缩算法的压缩率可以达到70%-80%。
(2) 降低压缩时间 新算法在执行时由于不用在内存中维护一个不可预测大小的临时数据集,并且在对数据是否满足旋转门压缩的判断时进行了改进,减少了判断的次数和对斜率的计算次数,因此降低了压缩时间。
(3) 解压缩时间也有改善 由于解压缩所需要的数据是常驻内存的,新的压缩算法在解压缩过程中减少了磁盘IO操作。因此,新的压缩算法也降低了解压缩时间。
4 结束语
新压缩算法可以使实时数据库的实时数据处理性能得到很大程度的优化。由于新压缩算法提供了高压缩率和快速的压缩速度,使得数据库的容量得到了大幅度增加。测试表明,采用新算法对轧钢生产过程中的实时数据,例如压力、温度等工艺参数进行压缩完全能够满足轧钢生产的实际需要。新算法压缩和解压缩过程均具有很好的快速性,能够更好地满足生产过程中对实时数据处理的要求。
摘要:在分析实时数据库中应用的旋转门压缩算法和基于斜率比较的旋转门压缩算法原理的基础上,提出了比例压缩算法和改进的基于斜率比较旋转门压缩算法。改进的算法通过改变构造斜率区间的时间点和角度,通过斜率最大点和斜率最小点来构造符合条件的斜率区间范围,以完成数据的压缩。给出了改进压缩算法的应用实例、性能的整体测试和分析,与旋转门压缩性能进行了对比分析。测试实验证明,该算法可以满足采集点不同分布情况下的数据压缩需求。
关键词:实时数据库,数据压缩算法,旋转门,斜率比较,比例压缩
参考文献
[1]孙秋懂.一个实时采集和查询的大型数据库系统的组织策略[J].计算机应用与软件,2003,20(12):28-29.
[2]刘云生,胡国玲.实时数据库系统的正确性[J].计算机应用与软件,1995,12(6):1-8.
[3]吴文传,张伯明,王鹏.一体化系统的分布式实时数据库管理系统[J].中国电力,2003,33(10):85-89.
[4]高宁波,金宏,王宏安.历史数据库实时压缩方法研究[J].计算机工程与应用,2004,28(8):167-173.
[5]康荣学,张优云,贾海波.远程试验系统中的数据压缩研究[J].小型微型计算机系统,2003,24(5):884-886.
[6]游小明,陈传波,刘升.数据压缩算法分析与改进[J].小型微型计算机系统,1999,20(8):570-573.
[7]曾玲,饶志宏.几种数据压缩算法的比较[J].通信技术,2002(9).
基于数据压缩算法 篇5
基于元算法专题数据处理数学模型库的建立及应用
随着专题数据处理向着定量化、辅助决策方向发展,对专题数据处理数学模型提出了更多更高的要求.针对当前制图系统和GIS中数学模型(库)的`重用性和可扩展性较差的问题,提出基于元算法的相关概念,并通过对专题数据处理数学模型的深入研究,建立了基于元算法的专题数据处理模型库,最后将该模型库应用到GIS中的专题地图制作中,取得了较好的实验效果.实践证明,基于元算法专题数据处理数学模型库不仅具有建库的高效性,而且具有管理的动态性和使用的灵活性,同时也充分说明基于元算法数学模型库系统具有较大的推广价值.
作 者:张利红 江南 张亚军 ZHANG Li-hong JIANG Nan ZHANG Ya-jun 作者单位:信息工程大学,测绘学院,河南,郑州,450052刊 名:测绘科学技术学报 PKU英文刊名:JOURNAL OF GEOMATICS SCIENCE AND TECHNOLOGY年,卷(期):25(1)分类号:P208关键词:数学模型 元算法 扩展元算法 因子库 数学模型库
基于数据压缩算法 篇6
关键词:全扫描测试;测试数据压缩;无关位;FDR编码
中图分类号:TP302文献标识码:A
文章编号:1674-2974(2016)02-0130-05
随着超大规模集成(VLSI)电路制造工艺的不断进步,越来越多的知识产权(IP)核被集成到一个系统芯片(SoC)上,与SoC相关的可测试性和测试方法问题被摆到了重要的位置.近十年来,如何降低测试成本,减少测试应用时间,降低测试功耗成为了研究的热点问题.
数据压缩技术能较好地解决这个问题,而编码压缩又是众多压缩方法中较好的一种.当前比较成熟的编码压缩方法有字典编码[1]、游程编码[2]、Huffman码[3]、Golomb码[4-5]、FDR码[6]、EFDR码[7-8]、IFDR码[9]等.这些编码压缩方法充分利用了测试集中的无关位(X).FDR是一种变长0游程编码,测试集中的X都被填充为0以增加0游程的长度,当测试集中1的个数较少时有较好的压缩效果.EFDR码和IFDR码可以同时对0,1游程进行编码,当测试集中1的个数较多时,也能取得较好的压缩效果.然而以上方法均没考虑等游程的情况.本文在IFDR上进行改进,提出一种基于游程相等的改进FDR(ERFDR),一方面能同时对0,1游程编码,另一方面当相邻游程相等时用较短的码字来代替,以进一步提高压缩率,减少测试应用时间.
1IFDR编码
IFDR编码是一种改进型FDR编码(Improved FDR).该方法将原测试集看作连续的0游程和1游程,0游程和1游程共用同一套码字,并规定0游程后接1游程,1游程后接0游程.若不是,即0游程后是0游程或者1游程后是1游程,编码时在两个相同游程中间添加一个“00”作为标识符.该方法默认从1游程开始编码,若测试集第一位为0,则在编码的过程中先必须加个“00”作为标识.表1给出了IFDR的编码表,可以看出游程长度l和其所在组k的关系为:k=「log2(l+3)-1.前缀中1的个数和其所在组的关系为:k组的前缀为1k-10,表示有k-1个1再接一个0.对于任一组,前缀和尾部的长度是相等的,组前缀是用来区分该码字所在的组(通过前缀的长度),尾部用来确定该码字所在组中的位置.和FDR编码表不同的是IFDR编码表的A1组只包含一个游程长度,且没有长度为0的游程.用IFDR对0游程和1游程编码时共用同一套编码.
为了进一步提高测试压缩率,本文在IFDR基础上进行改进,提出一种基于游程相等的改进FDR(ERFDR),编码表见表2.与IFDR码类似,ERFDR码也能同时对0游程和1游程编码,0游程和1游程共用同一套码字,且默认从1游程开始编码.考虑到相邻游程类型相同的可能性较高,与IFDR码不同,本文用一位“0”作为标识,则可多压缩一位.代价是游程长度为2n+1-3的编码增长2位,其中n为自然数.当这种游程个数小于相邻游程类型相同的游程个数的一半时,该编码方式有效.可以预见,当测试集中确定位比例越低,该编码方式越有效.进一步考虑到,每个游程的编码都是从1开始,且不会连续出现两个“0”标识符.我们可以用“00”标识相邻两个游程相等的情况,从而取得进一步的压缩效果.在不发生混淆的前提下,本文用“0000” 标识相邻游程类型相同且相等的情况.
总之,提出的方法有如下5个编码原则:1)若测试集第一个游程为0游程,须加“0”作为标识;2)当相邻游程类型相同但游程不相等时,在两游程的编码之间加“0”标识;3)当相邻游程长度相等且类型不同时,后一个游程用“00”编码;4)当相邻游程长度相等且类型相同时,后一个游程用“0000”编码;5)为了避免解码时发生歧义,当出现连续3个游程长度相等时,则对第3个游程直接用编码表编码,而不使用原则3)和4)编码.
3无关位的填充方法
大规模测试数据中无关位占95%以上,测试数据压缩效果的好坏在一定程度上取决于对X的填充.本方法对0,1同时编码,并充分利用游程长度和类型信息进一步提高测试压缩率,在对无关位填充的过程中应遵循下列两个基本原则:
1)尽量使用长游程编码;
2)尽可能地让相邻游程相等.
例如:00XX00X00XXXXXXX11XX11XX10这样一组测试数据,若在填充过程中仅仅遵循原则1),则填充后为00000000000000001111111110,用 表2编码,结果为11100011 110011,共14位.若遵循上述两原则:0000000000001 1111111111110,用本文的方法编码为110111 00共8位,减少了6位,压缩效果明显改善.本文所用的填充算法(无关位填充算法)如下.
6)FSM控制dec1为高电平,控制k+1位计数器的减1操作,直到k+1位计数器的值为3(即0…011)时,out输出为高电平,T触发器的输出翻转.
7)当解码完一个游程后,一直到bit_in为1之前,若bit_in共出现1个“0”,则令out为低电平,且v也为低电平0,表示输出无效,同时也为下一个游程编码做准备;出现两个0时,即“00”,则置load为高电平,通过dload把寄存器的值载入k+1位寄存器中,转到6);当出现“000”时(共3个时钟周期),则在前2个时钟周期置load为高电平,通过dload把寄存器的值载入k+1位寄存器中,转到6),第3个时钟周期令out为低电平,v且也为低电平0,表示输出无效;出现“0000”时,令out为低电平,然后置load为高电平,通过dload把寄存器的值载入k+1位寄存器中,转到6);当出现“00000”时,重复上述出现4个0的步骤,之后在最后一个时钟周期令out为低电平,且v也为低电平.
5实验结果
本文针对ISCAS89标准电路中较大的6个电路,采用mintest测试集在Visual C++平台上实验,得出的结果分别与Golomb码、FDR码、EFDR码、IFDR码以及ERLC[10]码进行比较,实验结果见表3.可以看到平均压缩率均优于其他方法,平均压缩率比Golomb编码方法提高了将近14%,比FDR和IFDR分别提高了6%和1.84%,比EFDR和ERLC也提高了0.5%.
6结论
本文在IFDR编码方法的基础之上进行改进,不仅能同时对0,1串编码,而且当出现相邻游程相等时,后一个游程用较短的码字来代替,进一步提高压缩率.实验结果充分验证了本文提出方法的有效性.该法简单可行,解码电路简单,硬件开销不高.
参考文献
[1]TOUBA N. Survey of test vector compression technique [J]. IEEE Design &Test of Computer, 2006,23(4):294-303.
[2]JAS A, TOUBA N. Test vector decompression via cyclical scan chains and its application to testing core-based designs[C]//Proceedings of International Test Conference. New York: IEEE, 1998: 458-464.
[3]JAS A, GOSH-DASTIDAR J, NG M, et al. An efficient test vector compression scheme using selective Huffman coding[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2003, 22(6):797-806.
[4]CHANDRA A, CHAKRABARTY K. Test data compression and decompression based on internal scan chains and Golomb coding[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2002,21(6):715-722.
[5]CHANDRA A, CHAKRABARTY K. System-on-a-chip test-data compression and decompression architectures based on Golomb codes[J]. IEEE Transactions on Computer Aided Design of Integrated Circuits and Systems, 2001, 20 (3):355-368.
[6]CHANDRA A, CHAKRABARTY K. Frequency-directed run-length(FDR) codes with application to system-on-a-chip test data compression[C]//19th IEEE Proceedings on VLSI Test Symposium. New York: IEEE, 2001: 42-47.
[7]EL-MALEH A, AL-ABAJI R. Extended frequency-directed run-length codes with improved application to system-on-a-chip test data compression[C]//Proceedings of 9th International Conference of Electronics, Circuits and Systems. New York: IEEE, 2002: 449-452.
[8]EL-MALEH A. Test data compression for system-on-a-chip using extended frequency directed ran-length code[J]. IET Computers & Digital Techniques, 2008,2(3):155-163.
[9]欧阳一鸣,郭文鹏,梁华国. 改进型FDR 码对SoC 测试数据的压缩及解压[J].计算机应用研究, 2008,25(1) :174-177.
OUYANG Yi-ming, GUO Wen-peng, LIANG Hua-guo. Soc test data compression and decompression with improved FDR code[J]. Application Research of Computers, 2008, 25(1):174-177.(In Chinese)
基于数据压缩算法 篇7
随着信息化技术的飞速发展与人们对网络的需求,各种系统数据量也越来越大,存储空间也不断的增加,对后期的建设和维护也带来了极大的影响。由于数据库太大,导致该数据库备份时间长,严重影响系统运行的稳定性;由于数据库太大,尽管这个时候数据库磁盘空间也大大提高了,但仍然无法跟上数据增长的速度,而其随着数据量的增大,数据的查询与存储效率也越来越低。为了提高数据库的性能,如何改进数据库查询效率的同时也越来越关注如何将数据压缩技术应用到数据库系统中。面临大数据时代,引起数据库太大,因此必须采用数据压缩技术,对数据进行压缩存储,解决目前由大数据引起地各种问题。压缩技术主要是减少文件所占的存储空间,并且要求压缩过程中不丢失信息。不丢失信息也就是经解压缩文件与压缩之前的文件完全相同。该文介绍了HBASE ,主要介绍HBASE中支持的压缩算法。并对其中的压缩算法进行了对比分析,并得出结果。
2 HBASE 概述
HBASE是Apache的Hadoop项目的子项目[1]。HBASE是一个开源的、分布式的、面向列的存储系统。HBASE是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行Ma-pReduce来处理Bigtable中的海量数据,然而HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,然而HBASE利用Zookeeper作为对应协调系统。HBASE[2]是一个面向列、可伸缩的、以键值对形式来存储数据的分布式存储系统,是Google的Big-table[3]的一种开源实现,它与传统的关系型数据库模型不一样。HBASE是Hadoop的一个子项目,它是在HDFS[4]之上开发的面向列的分布式数据库,可用于实时地随机读写大规模数据集。并且利用HBASE可搭建起大规模结构化存储集群在廉价PC Sever上。当用户由关系数据库向HBASE迁移时就不必对程序重新修改,因此降低了迁移成本, 能促进HBASE发展且具有现实应用价值。HBASE不同于传统的关系数据库,采用基于列的存储而不是基于行的存储模式。在基于列存储的数据库的数据表中,数据表中的每列单独存放在相邻的物理单元;这样查询时只需要访问涉及的列,不需要将整行数据都进行读取处理,大大降低系统的I/O开销;读取每列时可以由一个线程进行处理完成,同时也支持读取并发处理。
3 压缩算法
压缩算法分为无损压缩和有损压缩。两者相比,无损压缩比不高,但是它100%的保存了原始信息。无损压缩从压缩模型上主要分为基于统计的压缩算法和基于字典的压缩算法。基于字典压缩算法主要有LZ77[4]算法、LZ78[5]算法、LZW[6]算法、LZSS[7]算法。基于统计压缩算法主要有香浓-凡诺编码(Shanno-Fano)、游程长度编码(RLC)、哈夫曼编码(Huffman)、动态哈夫曼、算术编码。目前HBASE支持的压缩算法主要有Gzip[8]和LZO[9]。
3.1 Gzip压缩算法
采用Gzip算法对大数据进行压缩,在压缩过程中首先使用LZ77算法,再使用Huffman编码。LZ77算法的核心思想主要通过相同内容的替换来实现。如果文件中有两块内容相同,那么只要知道前一块的位置和大小,我们就可以简单表达确定后一块内容的相关信息。后一块信息(a,b)可以这样表示,a表示两者之间的距离,b表示相同内容的长度。当这一对信息(a,b)的大小小于被替换内容的大小,这样文件就得到压缩。Huffman编码的压缩原理:把文件中某段位长的值看作是符号。根据这些符号在文件中出现的频率,再对这些符号进行重新编码。按照这样的算法编码,文件的一些部分位数变少了然而一些部分位数变多了,因为变小的部分大于变大的部分,所以整个数据因此得到压缩。
3.2 LZO压缩算法
LZO是Lempel-Ziv-Oberhumer的缩写,LZO是基于LZSS算法是一种无损算法。LZO与Gzip不同在于解压速度,LZO在快速解压表现尤为明显。LZO和LZ77算法类似也是基于字典思想的一种压缩算法,同时使用固定长度滑动窗口用来缓存字典信息,所以LZO的编码也是需要使用一个偏移量,重复长度期待当前字符串。但是LZO与LZ77有一些区别,LZO的编码中没有了LZ77编码的第3项:新字符,当压缩字符与滑动窗体的字典信息没有匹配时使用一个标志位加字符内容标示而不是一个三元组;还有LZ77使用的是固定的压缩长度,LZO的压缩长度是可变的,范围在13个字节和4096字节之间,最后一点是LZ77压缩时需要滑动窗口内对待压缩数据做最大压缩匹配字符串的搜索,滑动窗口越大搜索消耗的时间也就越大,这是LZ77算法压缩很慢的原因之一,在LZO算法放弃最大压缩匹配字符串的搜索,而是使用的哈希映射的查找方式查找匹配的字符串[10]。
4 算法的分析与比较
数据压缩的性能指标主要有:压缩率、压缩速度、解压速度、压缩时间。衡量压缩空间上的变量主要指标是压缩率。同时压缩时间是衡量数据压缩性能的一个很重要的指标。对于大数据的特点,在这里主要讨论压缩率。压缩率与压缩速度公式如下:
压缩率%
从以上测试数据可知:当文件大小与硬件设备相同条件下,Gzip压缩率优于LZO压缩,但是压缩速度上LZO压缩更为突出。在空间和时间性能的限制中,Gzip的压缩率较低,压缩效果好,LZO压缩速度快。根据不同的需求可以选择不同的压缩,当对空间要求较高将采用Gzip压缩,当对时间要求比较严格可采用LZO压缩。
5 总结
本文对HBASE中支持的两种算法进行了比较、分析,并得出结果。在不同的场景根据需求将选择不同的算法。如果在要求读取压缩文件时,将进一步考虑解压速度。大数据如此重要,以至于其获取、储存、查询、共享、分析,数据挖掘乃至可视化地呈现,都成为了当前重要的研究课题。
未来的工作中,我们将会对如何对大数据挖掘、分析用户行为展开进一步地研究,以提高信息的可用性与有效性。同时,进一步研究如何规划大数据存储策略,是未来大数据挑战的工作之一。
摘要:近年来,社交网络、电子商务、网络游戏、在线视频等,新一代大规模互联网应用迅猛发展。这些新兴的应用出现了数据存储量大、业务增长速度快等特点。该文将总体分析HBASE中支持的压缩算法,并对这两种压缩算法做对比,对以后的建设提供了指导作用。对于大数据时代的到来,如何提高查询时间和存储容量、系统的稳定性和使用廉价的硬件设备,研究压缩算法具有重要的现实意义。
基于数据压缩算法 篇8
小波变换相对于傅里叶变换的不同点在于小波分解可以根据信号特征选取不同的小波函数:选用恰当的小波函数,可以很好地分析信号的特征;相反,若小波函数选取不正确,分解系数很可能淹没信号的特征。目前经典小波中的小波空间和尺度空间是由对同一母小波函数进行伸缩,平移得到的[2],构造起来简单,但单小波基难以与复杂数据的特征波形匹配。为此,文献[3][4]提出了多小波电能质量压缩算法,将小波的光滑性,正交性,紧支性等完美结合起来,提高了压缩效果,但多小波计算需要对信号进行预处理,且需进行多次的小波分解构,大大增加了算法的复杂度。
为了获得多小波基的灵活性同时避免多小波计算量大的问题,文献[5]提出混合小波基的概念,并证明了混合小波基的存在。文献[6]在混合小波基的基础上提出混合小波包(Combined Wavelet Packets,CWP)。本文在此基础上优化混合小波包的算法:利用自定义的信息代价函数,通过遗传算法优化小波函数族,使得电网故障数据可以用最合适的混合小波包基来分解。与传统的小波包相比,在保持原有算法复杂度基本不变的情况下,获得更好的时频域特性和压缩性能。
1 混合小波包
1.1 小波包算法
经典小波算法具有小尺度大频窗,大尺度小频窗的时频分布规律,而电力系统中故障数据的暂态或稳态扰动通常只出现在特定频带,为了更好去除冗余,希望故障存在频带具有最大化时/频域分辨率,解决办法是在小波算法基础上推广小波包分解,使得频谱窗口进一步细化,以便找到合适的小波包树结构,用最少的小波系数提取出电力系统故障信息。
构造小波包是从长度的2N的滤波器h(n)和g(n)开始,定义函数族{wn(t)},n=0,1,3…,当n=0时,w0=(t)是尺度函数,w1=ψ(t)是小波函数,小波包WP1可以由下列递推式生成:
1.2 混合小波包
不同小波函数具有不同时频特性[7]:电网监测系统录波数据的低频基波部分通过高正则性,高消失矩的光滑小波基将最大部分信号能量集中;针对故障扰动,选用具有良好的时频局部性短支撑的小波基进行特征匹配,可以有效地表示系统故障的突变特征。混合的小波包可以在不同频段实现不同的小波分解,设小波函数族分别为Ψ[1](t),…,ψ[K](t),对应的小波空间:({Vj}j∈z,φ[1](t),…,{Vj}j∈z,φ[K](t))由k个小波函数可以构成一组混合小波基,再由混合小波基来构造混合小波包,运用提升方案[10]构造有相同的空间结构小波包基,有φ[k](t)∈V0V1,ψ[k](t)∈V1,k=1,2,…,K,而φ[1](2t-n)是空间V1的正交基,所以存在hn[k]∈R,gn[k]∈R,使得混合小波包能够替换1.1中的小波包WP1函数形成的:
用w2n[k](t)代替WP1里的w2n(t)或用w2n[k+]1替换w2n+1(t),就可以得到新的函数族,成为混合小波包。原理证明见文献[5][6]。由图1表明WP1与混合小波包具有相同的空间的结构,每个小波子空间中,混合小波包有k种选择来构成其正交基。
以电压暂降数据为算例,分别采用db1小波包,电力系统压缩最常用小波db4小波包以及混合小波包做2层分解,得到小波系数[7],其中W20为低频系数,W21为细节系数。计算系数W21的能量集中性作为评价值1,具体原理见文献[6],获得的数值越小表示能量越集中;计算W21系数的频带混叠性作为评价值2,具体原理见文献[9],幅值越大表示频带混叠现象越严重。从表1可知混合小波包分解性能优于db4小波包。
将db4和混合小波包分解的系数列出如图2,放大图2可以发现,混合小波包的对应W21中毛刺明显少于db4,说明混合小波包能量集中性好于db4小波包,更多的能量集中到低频系数W20中。
2 优化混合小波包
2.1 基于熵准则的小波包基选择
选择小波包基的基本思想就是通过调整小波包树结构来获得最优基[9],原始信号在小波包正交基上投影,获得一系列的系数,如果只有少数系数很大,那么用这几个少数系数就可以代表信号的特征。定义具有可加性代价函数M为代价函数。则称为M以可加性的信息代价函数。本文采用的是香农熵[7],引入可加函数:
则M(x)可以表示为:
将M(x)为代价信息代价的数字写在树的终端节点里。从最下层的小波包树的终端节点开始,对于非终端节点,我们采用文献[7]的步骤寻找最优树。当小波系数包含信息集中度最小时,M(x)达到最大值,反之,当信息集中度很大时M(x)对应一个极小值。因此只要计算出不同小波包基对应的M(x),具有最小M(x)值的小波包基为最优基。
2.2 遗传算法优化函数族
由上一节得到的熵函数作为遗传算法的代价函数,搜索最优小波函数族ψ[1](t),…,ψ[K](t)。遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的自适应全局优化概率搜索算法[11]。它将问题的解空间组成的符号串表示为染色体,使用的遗传算子作用于染色体后进行种群繁殖,从而得到新一代种群,通过优胜劣汰完成对染色体的搜索过程。本文引入db小波,sym小波,bior小波,rbio小波,cdf小波构造混合小波函数族[13],以3层小波包分解为例,采用6位二进制遍码构造小波函数族染色体:[w0 w1 w2 w3 w4 w5 w6 w7],长度48位,选择方法为线性排名[11]。设定种群数量500,繁殖100代,交叉系数为250,变异系数位50,交叉算子取为整体算术交叉,变异算子采用多级变异。
按照2.1的熵函数M(x)判断染色体优劣,算法流程如下:
(a)随机初始化种群,计算M(X),保留当前最好解;(b)种群根据计算出的代价函数和选择策略确定选择概率来选择染色体;(c)根据繁殖概率和交叉系数进行繁殖或进行杂交以产生新种群。根据变异系数进行变异操作,跳出局部最优解的限制;(d)计算新种群适应值,保留当前最好解;(e)满足终止条件或迭代次数到达最大值,程序终止送出最优解;否则转到(b)。
图3为优化示意图:迭代40遍获得最优小波函数族。测试样本为电力系统谐波录波数据,横坐标为迭代次数,纵坐标为M(x)值。
3 基于混合小波包的压缩
为了对数据压缩算法的性能进行评估,定义了如下衡量指标[12]:
1.压缩比(CR):
Sraw:原始数据的长度,Scmp:压缩数据的长度
2.均方误差百分值(MSE)和信噪比(SNR,db):
X(i):原始的信号,Xc:(i)重建的信号,N:信号长度。
按照IEC标准测试的代表性的电能质量事件,在表2列出的暂态和稳态电能质量事件的数学模型,随机产生测试样本,持续时间为10个工频周期,实例数据采用电机启动电压电流录波数据。调整采样率12.8k,加入45db背景白噪声。
4 仿真测试
采用db4小波,db4小波包以及混合小波包分别对测试样本做3层分解,为了方便对比,保留分解得到小波系数模值最大的15%用于重构信号,即在保证压缩比一定情况下,比较重构信号的精度。分别列出db4小波,db4小波包以及混合小波包压缩系数重构后与原始信号的误差指标。每种电能质量事件数据随机生成200个测试样本。表3中列出结果是200个样本的测试得到的压缩性能指标的平均值。可以看出混合小波包分解系数压缩后的恢复效果最好,小波包恢复效果略好于小波分解。
评估不同压缩算法的性能也可以在确保压缩精度一定时,比较各自的压缩比。本文采用可以良好筛选奇异信号的模极大值法[8]用于电能质量数据压缩,具体实现为:保留低频系数,对于高频系数可以计算子空间系数平均值mean和相邻的系数差值p,若(p-mean)/mean>η,η为给定阈值(本文为10)那么认为模的最大值存在,p所对应的小波系数得到保留,非模的最大值对应的系数被置零后舍弃。
分别采用模的极大值压缩脉冲振荡的小波系数。图4为压缩比CR和分解层数的关系,横坐标为压缩层数,纵坐标为压缩比。粗点划线为混合小波包压缩曲线;★号线为db4小波包压缩曲线;▲号曲线为db4小波压缩曲线。可以看出,混合小波包在不同分解层数所对应的压缩比都优于db4小波,db4小波包。
5 结论
基于数据压缩算法 篇9
目前, 无线数据传输中的压缩算法正朝着更高的压缩比, 更小的失真度, 更快的编解码速度, 更小的花费和资源浪费的方向不断努力。因此, 本文将通过提出一种高效的压缩算法进行无线传输策略设计, 并利用此策略进行航空发动机的试车数据压缩与无线传输测试。
1 基于压缩感知的无线传感网络压缩算法
与传统压缩基本理论不同, 压缩感知对信号的采样和压缩编码发生在同一步骤。具体压缩采样过程包括信号稀疏表示、编码测量和信息重构。
1.1 信号的稀疏表示
应用压缩感知的前提是被采样信号的稀疏性, 首先需要将信号在稀疏基中稀疏表示。小波变换不仅可以处理非平稳信号, 而且其变换系数能够反映块间相关信息。所以, 将选择小波基做为稀疏基。
1.2 测量矩阵的选取
测量矩阵满足约束等距性, 是保证信号精确重构的基本条件。因此, 可通过选择高斯随机矩阵作为测量矩阵φ来高概率保证Ψ和φ的不相干。
1.3 信号重构
本文将围绕贝叶斯压缩感知模型的求取参数后验概率的核心思想, 对贝叶斯算法进行改进。利用贝叶斯估计方法作为理论基础, 结合最大似然估计的方法进行压缩感知重构的研究。
在实际环境中, 噪声无处不在, 观测向量变成y=Φz+n。研究发现, 噪声的方差可当作常量, 而观测数据可看作高斯随机向量。对信号模型采用带有反馈的贝叶斯模型, 信号服从拉氏先验分布。利用最简单的先验分布, 设向量z服从独立同分布、均值为0的高斯分布, 该先验分布自身的超参数α=[α1, α2, …, αN]T服从超参数为a, b的伽马分布。为了简化模型, 令a=1, 2b=λ, 则根据概率论中的恒等式, 可以得到z的后验概率:
因此, 该后验概率分布服从均值为u, 方差∑为高斯分布N (u, Σ) 。基于以上分析, 因此可利用增广思想, 转换为完全数据的后验。
由贝叶斯公式可知,
因为
去掉与α无关的项可得:
利用最大似然估计思想, 对αi更新可得, 当qi2-pi>λ时,
否则αi=0。为方便计算pi和qi, 更新pi和qi,
2 基于压缩感知技术的航空发动机试车数据压缩与无线传输仿真测试
航空发动机试车过程中研究的参数主要包括发动机高低压转子转速、振动速度、滑油压力、滑油温度、燃油压力和燃气温度等。利用Matlab/Simulink的无线网络系统仿真工具Truetime, 进行基于压缩感知技术的航空发动机试车数据压缩与无线传输仿真测试。为确保无线网络传输效率, 经过实验对比, 设置丢包率为0.1, 传输速率为800kb/s不变, 网络时延为2ms, 并选择IEEE802.15.4 (Zig Bee) 协议。
以进气口总温传感器节点为例 (节点模型如图1所示) , 对无线数据传输进行测试分析。该节点通过仿真K型热电偶温度传感器感应进气道进气口总温, 输出前后的温度变化如图2所示。
经过观察对比, 传输前后的信号基本没有误差。因此, 本文提出的无线传感器网络无线传输策略中, 添加压缩感知技术是一种高效的网络传输策略, 网络传输效率高, 信号重构精度高, 可应用于实际的数据监测中。
3 结语
无线传感器网络中节点能量消耗快, 数据传输量往往也很大。本文针对无线传感器网络的网络传输特点提出了一种基于压缩感知的数据压缩方法, 并利用Matlab的无线网络系统仿真工具Truetime进行基于压缩感知的航空发动机试车数据压缩与无线传输仿真测试。经过测试, 本文提出的无线传输策略传输效率高, 网络节点能量消耗低, 信号重构精度高, 可应用于实际的大量数据传输和实时监测等应用中。
摘要:无线传感器网络已经成为数据传输的重要渠道。为了保证传输的高效性, 降低传感器节点能量的损耗, 通过结合无线传感器网络的传输性能, 实现了基于高效压缩算法的无线传输策略设计。根据此策略, 利用Matlab的无线网络系统仿真工具Truetime, 进行航空发动机的试车数据压缩与无线传输测试, 并取得了理想效果。
关键词:高效,压缩算法,无线传感器网络,航空发动机,试车数据
参考文献
[1]吴景志.对当今无线数据传输技术的研究[J].电子测试, 2013 (6) :153-154.
[2]冀晓骥, 杨钊.无线数据传输技术的思考与探讨[J].计算机光盘软件与应, 2012 (8) :90-96.
[3]林蔚, 韩红丽.无线传感器网络的数据压缩算法综述[J].小型微型计算机系统, 2012 (9) :2043-2048.
基于数据压缩算法 篇10
传感器网络一般部署在比较复杂的地形环境中, 并且节点采用干电池进行供电, 这导致节点能源的不可替代性。因此, 如何有效节能是维持无线传感器网络生存周期的核心问题之一。在WSN中通信消耗了网络的绝大部分能量, 因此采用数据压缩能有效降低网络流量从而达到节能效果。而环境监测中所采集的数据 (如温度) 具有很大的冗余性, 这为数据的有效压缩提供了可行性。
传感器节点采集的数据一般包括时间、温度、湿度等感知信息, 针对数据的时间相关性可以把时间表示在二维空间的X轴, 采集的感知信息表示在Y轴。因此, 任何一个采集的数据都可以看成二维平面上的一个点坐标, 这样可以将采集的数据看成一组时间序列, 那么对原数据的压缩问题可以转换为对时间序列压缩处理的问题。本文的主要贡献在于:利用面积矢量叠加原理提出一种新的基于面积矢量的有损压缩算法, 推导面积阈值的计算公式。
常用的时间序列维度约减方法包括离散傅里叶变换 (DFT) 、离散小波变换 (DWT) 、逐段线性描述 (PLR) 等[1]。其中PLR复杂度低、计算速度快、压缩率高, 更适合于WSN中的数据压缩。目前关于PLR算法思想主要包括以下几个方面:将距离作为约束条件, 如文献[2-4];将面积作为约束条件, 如文献[1, 5];通过函数进行线性拟合, 如文献[6-8];采用夹角或斜率作为约束条件, 如文献[9, 10]。本文提出的算法采用将面积作为约束条件, 但本文的新奇之处是采用失量叉乘的方法获取三角形面积矢量。
PLR算法要运用到WSN中必须满足时空复杂度非常低的要求。Douglas–Pecuker算法[11]是一种自顶向下的PLR算法, 虽然该算法从全局选取最优点, 但其复杂度较高, 无法满足无线传感器网络节能要求。SDT算法[12]是Bristol提出的一种具有代表性的在线PLR压缩算法, 其算法简单、计算能耗低、执行速度快。ISDT算法[13]是对SDT算法的改进, 改进后算法压缩率有了很大提高。文献[7]提出一种ULDA压缩算法运用于WSN中, 该算法是用一种近似函数来表示数据近似的方法。文献[14]提出了一直简单快速的在线PLR方法, 该算法对变化较慢的数据具有较高的压缩率而且压缩速度非常快。实验表明, 在最大允许误差相同的条件下, 本文提出的算法与文献[14]中的算法在时间复杂度相当的情况下能够取得更高的点压缩率。
1 基于面积矢量的有损压缩算法
1.1 感知数据在二维坐标系中表示
传感器节点采集数据是每隔单位时间进行采集的, 并且可知采集到的每个感知数据都和一个唯一的时间相对应, 因此我们可以将这些感知数据看作为一组时间序列。
定义1时间序列设时间序列L=< (t0, P0) , (t1, P1) , …, (tn, Pn) >, 其中Pn是在时间tn上的观测值。
这样我们可以将时间序列L表示在一个二维坐标系中, 其中X轴表示时间, Y轴表示感知数据值。为了使坐标系更为简单, 我们设置第一个数据为坐标原点, 后续感知数据用与原点的相对差值表示。图1里列举了一个传感器节点单位时间间隔依次采集到的七个温度数据p0-p6在二维坐标系中的表示, 其坐标依次为< (0, 0) , (T, 40) , (2T, 65) , (3T, 100) , (4T, 80) , (5T, 85) , (6T, 50) >。这里的T为采样周期, 一般可默认T取值为1。
1.2 算法流程图
该算法流程图如图2所示, K代表数据点下标, PS代表每一轮压缩开始的初始起点, Sent代表传感器节点对原数据进行数据压缩后所需发送的感知数据集, 初始只有P0一个元素。其中SΔPSPKPK+1代表按下标递增的三个数据点构成的三角形面积矢量[15], 计算公式如下:
Sp[S, S+1, …, K+1]表示初始点PS与处于PS和PK+1间按下标递增的任意两相邻数据点构成的三角形面积矢量和, 公式如下:
当K=S+1时定义初始值Sp[S, S+1]=0。
当三角形面积矢量和的绝对值超过阈值Areathreshold则本轮数据压缩结束, 将PK加入到发送集合Sent中, 并设置其为下一轮数据压缩的初始起点。
采用三角形面积矢量可以解决计算面积和时产生的重覆叠加问题.并且可知如果数据点分布越接近于直线, 那么求得的Sp[S, S+1, …, K]绝对值越小;如果数据点分布近似曲线, 那么求得的Sp[S, S+1, …, K]绝对值越大。目的节点收到数据后进行解码, 解码算法是以每相邻的两个数据作为起点和终点确定的直线数据插值来取代原始数据。
例如, 采用AVA算法对图1中的数据进行压缩, 压缩过程如下:首先, 设置算法面积阈值Areathreshold=40。算法开始先读入起点P0, 设置其为本轮压缩的初始点, 并放入到发送集合Sent中, 则有PS=P0, Sent={P0}, 然后读取下一个数据P1并判断该数据是否为最后一个数据, 如果不是, 则计算SP[0, 1]=0, 小于面积阈值。继续读取后续点P2, 计算SP[0, 1, 2]=-7.5, 其绝对值仍小于阈值。继续读取后续点P3, 计算SP[0, 1, 2, 3]=-5, 其绝对值小于阈值。继续读取P4, 计算SP[0, 1, 2, 3, 4]=-85, 其绝对值大于面积阈值40, 因此按照算法流程本轮压缩结束, 并回退一步读入操作, 将数据点P3加入到发送集合Sent中, 并设置P3为新的初始起点, 即PS=P3。下一轮开始读入P4, 按照以上方式继续进行。最终可得到发送集合Sent={P0, P3, P6}。
2 AVA算法面积阈值取值公式推导
在以往的一些压缩算法中, 阈值的取值依赖于经验或实验尝试, 这可能会导致阈值和实际数据特性的失配或者压缩误差过大, 从而影响压缩效果[13]。为此, 本文推导出面积阈值的计算公式, 从而选取合适的面积阈值。推导过程如下:
为了保证结果具有普遍性, 这里任意选取压缩后发送数据Sent中的两相邻数据点PM和PN (M
图中PM和PN的位置是任意选取的, 并且假设PK点在直线PMPN的上方 (如果PK在直线PMPN的下方, 可以用以下类似方法证得同样结果, 故不做另外阐述) 。分析如下:
当N=M+1时, 表示数据点PM和PN间没有数据点被压缩, 则可以忽略这种情况。
当N>M+1时, 我们可以找到第一个原数据点Pt在直线MN的下方或刚好落在直线上, 这里下标t是从K+1开始递增。参照文献[15]可知数据点集{PM, PK, PK+1, …, Pt}首尾相连时可以构成一个多边形。那么, 三角形ΔPMPKP'K+1为该多边形面积的一部分。从而, 可以得到如下不等式关系。
另外, 由两直角三角形ΔPKHP'K∽ΔGP″KP'K, 有:
即:
当K=M+1时, 显然可知:
故, 由式 (3) -式 (5) 可得以下不等式成立:
即:
当K>M+1时, 根据算法流程有:
由式 (7) 、式 (8) 和式 (9) 可推出:
故, 由式 (3) , 式 (4) , 式 (10) 可得以下不等式成立:
即:
综上所述, 所有估计值P'K的估计误差dK可用以下不等式表示:
4Area由式 (12) 可知, 当K>M+1时的值随K的增 (K+1-M) T加而递减。所以可知, 当K=M+2时, dK可能取到最大值, 那么设定即 (通常取3T3Tthreshold=E4T=1) , 这样就可以保证所有压缩点的估计误差均在误差允许范围内。
3 实验结果
本文实验对象是通过单个Telos B传感器节点每隔单位时间采集的若干温度数据如图4所示, 其中纵坐标是用十进制表示的温度数据值。实验结果是在同一台计算机上模拟本文AVA算法和文献[14]中Line算法进行对比得出的结论。
本文通过比较两种算法的点压缩率来比较算法压缩性能, 这里定义:
在相同的最大允许误差下, 本文AVA算法和Line算法压缩率对比结果如图5所示。从图中可以看出AVA算法比Line算法具有明显优势, AVA压缩速度更快, 点压缩率更高, 可以更大限度地减少数据冗余, 从而达到节省能量的目的, 延长网络寿命。
同时, 表1列出了AVA算法和Line算法的时空复杂度。从表中可以看出两种算法的时空复杂度均在同一数量级, 并且两者时空复杂度都非常低, 均适合于无线传感器网络的低时空复杂度的要求。
结合图5和表1, 我们可以得出结论, 在同等级的时空复杂度条件下, 在无线传感器网络中运用本文AVA算法比Line算法更具优势。另外, AVA算法不仅能压缩变化较慢的感知数据, 而且还能压缩变化幅度较大的感知数据。
4 结语
基于数据压缩算法 篇11
关键词 沪深300股票指数;复杂度;kolmogorov熵;样本熵;模糊熵
中图分类号 F830 文献标识码 A
AbstractThis paper studied the high frequency data of the CSI 300 index, and examined the efficiency of complexity measures such as Kolmogorov entropy, sample entropy and fuzzy entropy in high frequency environment. By using the effective measurement, it compared the changing process and range of the complexity both before and after the subprime crisis. The results show that, compared with the Kolmogorov entropy based on the compatible method and sample entropy, fuzzy entropy is more suitable for measuring the CSI300 index's complexity, which has the lower sensitivity to the similar tolerance and the better continuity of measure value. The CSI 300 index's complexity is rising during the sample interval. However, the complexity during the crisis is far more less than the two other stages, and the complexity after the crisis is higher than that before the crisis. Compared with the developed markets and even some emerging markets, the CSI 300 index's complexity is much lower.
Key wordsthe CSI 300 index; complexity; Kolmogorov entropy; sample entropy; fuzzy entropy
1问题提出与相关文献回顾
根据混沌理论,复杂度被定义为非线性动力系统或序列的复杂性程度[1].其大动态范围、短平稳性和小数据量的特征被认为是最适于分析非线性系统的动力学特征参数,也是非线性动力系统研究的重要方面[2].沪深300股票指数是联系我国股票现货市场与股指期货市场之间的重要桥梁,金融机构往往需在日内动态调整资产头寸并关注风险管理,因此,沪深300股票指数高频数据的复杂性程度对于风险管理和交易策略实施均具有重要意义.在我国市场环境下,有效地复杂度测算方法是什么?与成熟市场和周边的新兴市场相比,我国沪深300股票指数的复杂度如何?围绕次贷危机的影响,不同时间阶段其复杂度的变化幅度与变化过程如何?既有研究尚未对上述系列重要问题做出较为全面地解答,同时学术界和实务界对采用何种方法来进行复杂度测算亦尚未达成共识.
早期文献表明,关于混沌序列复杂度的研究始于20世纪60年代.西方学者提出了各种相关测度指标与方法,但成果主要集中于工程计算领域.随着金融市场非线性动力学行为与混沌效应的存在性逐渐得到实证,关于股价波动复杂度的测算研究成为热点,但方法局限于围绕分形维数的测算,研究结论也在多重分形错觉方面存在较大争议[3,4].
近年来,学者们运用不同类型的熵模型展开了复杂度测算研究,主要包括柯尔莫哥洛夫熵(kolmogorov)、近似熵(ApEn)、样本熵(SampEn)和模糊熵(FuzzyEn)算法.kolmogorov(1965)将复杂度界定为能够产生某一(0,1)序列所需的最短程序的比特数,并形成Kolmogorov熵算法.Lempel和Ziv(1976)给出了其在计算机中实现的具体算法.对此,肖辉,吴冲锋,吴文峰,等(2002)将之应用于中国股票市场检测,计算了沪市综合指数与深市成份指数的复杂度[5].尽管该算法有着严格的数学理论基础和依据,但因需将给定时间序列转换成符号序列,使得转换方法成为该算法在股价波动复杂度测算应用时的关键.然而,均值法、极值法和遗传密码法三种主要转换方法均未考虑序列整体性质,亦不能区分弱混沌与周期序列,以及强混沌与随机序列(Abuasad, ect., 2012)[6].综合法(He,Xu,2000)为解决上述问题,按不同时间序列分别应用均值法和极值法,但受限于需事先明确知道时间序列性质(赵波等,2014).对此,王福来和达庆利(2007)提出了基于兼容法的Kolmogorov熵算法并应用于上证综合指数日收盘价序列复杂度测算[7],为Kolmogorov熵算法缺陷问题的解决提供了新视角.
由于近似熵算法(Pincus,1995)采用Heaviside函数进行相似性量度,敏感于阀值和相空间维数,从而参数选取会使其计算精度带有经验性(蔡觉平,李赞,宋文涛,2003).样本熵算法通过不计算自身匹配的统计量,对其形成了改进,但在无模板匹配的情况下可能出现ln0的无意义结果(贺少波,尹林子,阿地力·多力坤,2012).对此,学术界相继提出了多种改进方法.肖方红,阎桂荣和韩宇航(2004)将混沌伪随机序列看成符号序列,提出符号熵算法.虽然该算法不涉及参数的选取,计算比近似熵算法更为简单,但符号熵算法需预先知道符号空间,且只针对伪随机序列,应用范围局限性较大.Chen(2011)在对样本熵(SampEn)进行改进基础上提出模糊熵(FuzzyEn)算法,并基于TDERCS系统成功检验了其有效性(贺少波,尹林子,阿地力·多力坤,2012)[8].模拟显示,基于模糊熵的复杂度测算方法可能在对参数依赖的敏感性方面更低,测度值的连续性更好,从而获得更高的测度效率(李鹏,等,2013)[9].
文章的创新之处在于:1)不仅较为全面的对比了各种基于熵算法的复杂度模型测算效率,而且进行了小样本修正,以期为沪深300股票指数复杂度测算提供可靠的实证依据与分析结论.2)围绕次贷危机的影响分阶段研究和比较了危机前、中、后期序列复杂度的变化过程与变化幅度,并与发达市场乃至周边新兴市场股指期货标的指数的复杂度相较,得到我国沪深300股票指数复杂度的演化规律与独特性质.
2代表性熵算法、有限样本修正
与测算效率评价标准
通过对相关研究成果的梳理可知,对既有测算效率形成一定改进后的代表性熵算法主要集中为基于兼容法的Kolmogorov熵、样本熵和模糊熵.重构相空间维数m、相似容限度r和序列长度N是测算过程中的共同关键变量.如模糊熵:
当时间长度足够长时,MFDFA方法计算得到的h(q)是较准确的,但在实际应用中,序列长度很难满足要求,此时有限样本会使h(q)的计算产生偏误,进而也会使关联维数以及熵计算中的相空间维数m产生偏误,因此需要对MFDFA中的有限样本效应进行修正,以提升测算和评价结果的准确性.修正方法基本思路为:利用Liu(2007)和吴栩等(2014)对马尔科夫转换多重分形模型(MSM)的解析,构造能够尽可能反映原始股指序列多重分形特征的模拟序列,该模拟序列的长度应该足够的长,从而可以消除MFDFA计算中的有限样本效应.
在测算复杂度的过程中,对模型效率的评价标准主要集中于算法本身的稳定性和结果对模型参数的依赖程度,即,算法鲁棒性,对相空间维数、相似容限度和时间序列长度的敏感性和依赖性,以及测度结果的连续性[11].由于是对我国沪深300股票指数运动的复杂度进行测算,而复杂度的标准值尚未知,不同于在某些性质既定和已知正确结果的复杂系统下对研究方法的评价,因此,通过算法鲁棒性来评价模型效率的路径尚不能行通.在熵算法模型中股指序列长度N既定,相空间维数m通过计算获得,测度值对参数的敏感性和依赖性,以及结果的连续性主要与相似容限度r密切相关[12].因此可以认为,当在相似容限度的经验取值范围内,某一算法未出现错误度量值,其测度结果趋于稳定且图像相对平滑,则该算法对相似容限度的敏感性和依赖性较低,测度效率相对较高.
3数据说明与采样频率筛选
以2005年5月9日至2013年12月31日沪深300股票指数1分钟、5分钟、10分钟、15分钟和60分钟高频数据
选择了相关研究中主要出现的若干种高频频率作为筛选对象.作为基础研究样本.数据来源为Reset数据库.虽然我国沪深300股票指数于2005年4月8日上市,但考虑到上市之初,市场各方对该指数存在熟悉过程[13],为准确起见,在数据选取时剔除掉了2005年4月的交易数据.
直接采用股票指数而未如传统证券市场定量分析采用收益率数据 在有关证券市场的定量分析中通常使用收益率样本而不是指数本身,主要是考虑到价格序列的相关性违反以高斯假设和正态分布为基础的线性分析框架原则.,主要缘于文章的复杂性研究视角,避免收益率变量可能对系统非线性相依结构所形成的破坏.
沪深300股票指数1分钟、5分钟、10分钟、15分钟和60分钟高频数据的描述性统计结果如表1所示, 其中IF1、IF5、IF10、IF15和IF60依次对应不同采样频率.统计结果显示,各种不同采样频率的高频数据都表现出有偏和尖峰厚尾的统计特征,且明显超出了正态分布假定的范围(JarqueBera统计量显著) .因此,可以认为各序列明显具有非线性特质.
鉴于不同采样频率可能会带来不同检验结果,在进行复杂度测算之前需要进行有效采样频率甄别.由既有熵测算方法可知,相空间维数是各熵算法中的关键变量.较窄的多重分形度置信区间对应较精确的维数.因此,遵从多重分形度置信区间计算方法,以对多重分形度置信区间宽度的比较筛选有效高频采样频率,比较结果如表2所示.
根据表2结果可知:各采样频率下经有限样本效应修正后的多重分形度均仍接近于1,我国沪深300股票指数运行具有多重分形特征;置信区间宽度随采样间隔的增加而变化,其中当间隔为5分钟时宽度最窄.从而,沪深300股票指数5分钟高频数据为进行复杂度测算的有效采样频率数据.
为方便与发达市场和周边新兴市场的股指期货标的指数复杂度的对比,文章还选择了标准普尔500指数、日经225指数和韩国指数2005年5月9日至2013年12月31日的5分钟高频数据,作为第四部分对比分析中的研究数据.
4沪深300股票指数高频数据复杂度的
熵测算实证结果与分析
由于涉及了三种熵算法模型,且模型中至少涉及了三种关键参数,为了清晰起见,此处不逐一报告参数的估计结果,而是直接展示对应熵算法下的复杂度结果,及其随关键参数值改变而变化的过程,并进一步进行模型测算效率评价.
4.1关键参数值的确定
由熵算法步骤可知,重构相空间维数m、相似容限度r和序列长度N是测算过程中的关键变量,需要对其进行准确数值确定.
在上述三变量中,时间序列长度N由给定样本区间决定.经筛选,研究中的基础样本为2005年5月9日至2013年12月31日的沪深300股票指数5分钟高频数据,时间序列总长度N= 689 330.
相似容限度r属于熵算法模型中的阀值变量,其值过小会增加结果对噪声的敏感性,过大则会导致信息丢失,根据Chen(2009)的模拟建议,r的取值一般可在[0.3,0.35]中选取.
对相空间维数m的选取,相关研究通常使用经验值.由于尽管较大的m能细致重构系统的动态演化过程,但亦会陡增运算量,m取值通常为2、3、4、5和6.为了更为准确衡量指数复杂度,可以基于所提出的有限样本修正方法计算获取合理m值.依第二部分中的修正算法得到测算后的适宜m值为3
鉴于篇幅有限,小样本修正的计算步骤在此不作列示,仅给出最后结果.有兴趣的读者可与作者联系..
4.2全样本区间内的测算结果与模型测算效
率比较
基于兼容法的Kolmogorov熵算法的计算结果显示,全样本区间内我国沪深300股票指数的复杂度为1.057 1,超出了该算法复杂度值的(0,1)值域.考虑到全样本区间可能因数据存在结构突变而导致虚假统计结果,运用计算程序每次取其连续的1 000个数据在有限样本效应修正下进行分析,然后取其均值作为序列平均复杂度.结果显示,平均复杂度为1.049 9,依然超出了Kolmogorov熵算法复杂度的值域范围.说明基于兼容法的Kolmogorov熵算法并不适用于对我国沪深300股票指数复杂度的测算
其原因可能缘于该算法在序列复杂度接近于1时分辨率不高.但整体结果与分段后均值结果均超出了值域范围,已经说明该方法失效.文章并不旨在分析该方法失效的原因,因此不再对此进行深入说明..
图1(a)、(b)依次显示的是样本熵和模糊熵两种算法对复杂度的估计结果.虽然相似容限度r的经验值取范围为[0.3,0.35],但为了更便于分析研究方法的效率,在编写程序过程中令r从0到0.5以0.001等间距变化
以0.001的间距变化趋近连续变化.,并对应计算复杂度值,以观察结果的连续性及其对参数变化的敏感程度.从图1(a)(b)中可以看出,样本熵和模糊熵算法均测出了复杂度计算结果,且计算结果整体比较接近.复杂度值均随r的增大而减小,当r取值为[0.3,0.35]时,其所估计的沪深300股票指数复杂度值相对其他区间内的复杂度值平稳,数值在0.55到0.43之间(如图1(a)和(b)中的虚线区域部分).
相似容限度(a)样本熵算法下沪深300股票指数复杂度的估计结果
相似容限度(b)模糊熵算法下沪深300股票指数复杂度的估计结果
在测度结果的连续性与对参数的敏感性方面,样本熵测度结果在r的整个取值范围[0,0.5]内出现多个跳跃点,且在[0.3,0.35]范围内的跳跃点明显多于模糊熵(如图1(a)中的虚线区域部分),说明模糊熵算法相对于样本熵算法对相似容忍度的敏感性更低,测度值的连续性更高.有限样本效应修正后,当r取[0.3,0.35]时,模糊熵算法下的复杂度均值为0.494 9.
4.3不同时段沪深300股票指数复杂度结果
比较
为进一步刻画我国沪深300股票指数复杂度,在对测算方法评估后,本部分基于模糊熵算法,对全样本区间内不同时段复杂度进行测算比较.
从2005年5月9日至2013年12月31日的全样本区间可划分为2005年5月9日到2007年9月30日的指数高速攀升阶段,2007年10月8日到2009年3月31日的危机阶段和2009年4月1日到2013年12月31日的后危机阶段(其涵盖了我国股指期货从2010年4月16日推出并运行至今的阶段)三个阶段.各阶段复杂度值如表3所示.
虽然各阶段时间序列长度不尽相同,但由于模糊熵算法优于样本熵和Kolmogorov熵复杂度算法,且当N值在10 000左右时,模糊熵算法本身具有对时间序列长度较高的一致性,经有限样本效应修正后此种一致性效果会进一步增强.因此,分阶段后时间序列长度的不一致并不会对分阶段研究的计算结果形成显著影响.
如表3所示,各阶段复杂度测算结果表明,在危机前中国股市的集中上涨时段,指数复杂度为0.462 3;指数受危机冲击而大幅下挫阶段的复杂度为0.427 1;后危机时代的指数复杂度为0.510 2.其说明我国沪深300股票指数复杂度以后危机时代阶段为最高,受危机冲击阶段为最低.
美国次贷危机前我国股票指数运行表现为整体性快速上涨,受危机影响阶段表现为指数整体大幅下挫,两阶段股指运行均呈现出较强规律性,其市场投资者行为较单一,符合规律性序列复杂度较低的复杂度数值性质.而指数下跌阶段复杂度低于上涨阶段复杂度,则提示出沪深300股票指数在下跌阶段趋势性更强.这一点与股指波动非对称性(陈浪南,黄杰鲲,2002;陆贤伟,董大勇,纪春霞,2009;顾锋娟,金德环2013)特征一致.指数在后危机时代复杂度得到提升,说明危机冲击及相关股市政策改革后,我国沪深300股票指数运行的单一趋势性有所转化,投资者行为多样性得到补充;同时,在后危机阶段我国股指期货正式推出运行,也说明股指期货的推出对打破股票市场运行单一趋势性与修正波动时间一定程度上发挥了作用.
4.4不同市场股指期货标的指数复杂度比较
为了便于与发达市场和周边新兴市场的股指期货标的指数复杂度进行对比,此处选择了标准普尔500指数、日经225指数和韩国指数2005年5月9日至2013年12月31日的5分钟高频数据作为对比样本.基于模糊熵算法,全样本区间内发达市场和周边新兴市场的股指期货标的指数复杂度测算结果如表4所示;2009年4月1日到2013年12月1日的后危机阶段的复杂度测算结果如表5所示.
通过对比各个不同股票市场的复杂度,不难发现,无论是全样本区间还是后危机阶段,发达股票市场的复杂度均大于我国股票市场的复杂度;其中,我国沪深300股票指数复杂度以与标准普尔500指数复杂度差距为最大,与韩国指数复杂度最为接近;而在后危机阶段,我国沪深300股票指数运行的复杂度较其他国家股指期货标的指数复杂度的差距均有所减小.说明,我国沪深300股票指数相对于代表性发达市场和周边新兴市场股指期货标的指数的可预测性更明显,潜在的市场投机性更大;而随着我国股票市场相关监督和运作体系的完善以及股指期货的推出,市场逐渐成熟,可预测性有所降低,投机性正在逐渐被削减.
5结论
文章对我国沪深300股票指数高频数据复杂度测算方法及复杂度特征进行了研究.通过运用3种新兴主流熵算法以及有限样本效应的修正,研究了3种算法对沪深300股票指数复杂度测算适用性以及不同时段和不同市场对比下我国沪深300股票指数复杂度变化和差异.
主要实证结果显示: 第一,在日内高频数据环境下,与基于兼容法的kolmogorov熵和样本熵算法相比,模糊熵算法是一种更适用于研究我国沪深300股票指数的有效的复杂度测算方法.其对相似容忍度参数的敏感性更低,测度结果的连续性更好.第二,随着时间的推移,我国沪深300股票指数序列复杂度整体呈上升趋势.但危机中阶段指数序列的复杂度远小于危机前后两阶段的复杂度,后危机阶段复杂度高于危机前阶段复杂度;相较于危机中阶段,后危机阶段复杂度的上升速度较快.第三,相较于发达市场甚至周边新兴市场股指期货标的指数,我国沪深300股票指数的复杂度呈现偏低结果.
针对实证研究的政策建议如下:
第一,鉴于虽然在后危机阶段(包括股指期货的推出)我国沪深300股票指数复杂度得到了快速上升,但与其他市场股指期货标的指数运行情况相比仍然偏低.而比较公认的观点是,偏低的复杂度对应市场投资者行为多样性不足,市场运行的不可预测性较弱.因此,为了稳定沪深300股票指数运动,减少较多一致性投机行为,增加机构投资者参与数量,提高预测难度.
第二,由于多种类型机构投资者可以丰富不同环境下期货与现货指数市场的投资行为,并对市场稳定起到积极作用从而提升市场复杂度(魏宇,赖晓东,余江,2013),目前我国还需转变机构投资者投资策略,避免一致性追涨杀跌,引导机构投资者端正投资理念,发挥其在股票市场中的稳定作用.
第三,由于实证结果表明,在日内高频环境下,模糊熵算法具有更好的适用性.因此,在监测沪深300股票指数复杂度时可采用该方法进行测算,以便获得更为准确的结果.基于兼容法的kolmogorov熵算法虽然较基础性kolmogorov熵算法形成了改进,但分析结果也表明了其对我国沪深300股票指数的不适用性.虽然在研究过程中还可对其形成进一步改进,但其计算过程相较于模糊熵算法的繁琐性也是明显的.因此,如果考虑到运算成本和使用难度等问题,模糊熵算法是监测我国沪深300股票指数复杂度的不错选择.
参考文献
[1]张林,李荣钧,刘小龙. 基于小波领袖多重分形分析法的股市有效性及风险检测[J]. 中国管理科学,2014,22(6):17-26.
[2]陈小军,李赞,白宝明,等. 一种确定混沌伪随机序列复杂度的模糊关系熵测度[J]. 物理学报,2011,60(6):064215.
[3]魏宇,赖晓东,余江.沪深300股指期货日内避险模型及效率研究[J].管理科学学报,2013,16(3):29-40.
[4]周炜星.上证指数高频数据的多重分形错觉[J].管理科学学报,2010,13(3) :81-86.
[5]肖辉,吴冲锋,吴文峰,等.复杂性度量法在股票市场中的应用[J].系统工程理论与实践,2002,11(3):190-197.
[6]A ABUASAD,M I ALSMADI. Evaluating the correlation between software defect and design couping metrics[C]//2012 International Conference on Computer Information and Telecommunication Systems(CITS). Washington DC: IEEE Computer,2012:1-5.
[7]王福来,达庆利.Co复杂度的改进及其在证券市场中的应用[J].数学的实践与认识,2007,37(8):20-25.
[8]贺少波,尹林子,阿地力·多力坤.模糊熵算法在混沌序列复杂度分析中的应用[J].物理学报,2012,61(13):130507.
[9]李鹏,刘澄玉,李丽萍,等.多尺度多变量模糊熵分析[J] .物理学报,2013,62(12):120512.
[10]J KANTELHARDT,S ZSCHIEGNER. Multifractal detrended fluctuation analysis of nonstationary time series[J]. Physica A,2004(2):49-83.
[11]I SOROKIN. Comparing files using structural entropy[J]. Journal in Comuter Virology, 2011, 7(4):259-265.
[12]Ruipeng LIU, T D MATTEO, L THOMAS. True and apparent scaling: The proximity of the Markovswitching multifractal model to longrange dependence[J]. Physica A: Statistical Mechanics and its Applications,2007,383(1):35-42.
基于数据压缩算法 篇12
关键词:数据压缩,db4小波变换,阈值
0 引言
未来电网的智能化发展将越来越依赖于实时监测系统[1]的录波数据, 而有效传输和存储数据是监测系统高效运行面临的巨大挑战。因此, 研究一种高压缩比、高效率的数据压缩方法, 减少数据的存储与传输量, 保证传输速度, 使监测系统高效运行具有重要的现实意义。
小波变换是对信号的时间-尺度 (时间-频率) 的分析方法, 在时频两域都具备表征信号局部特征的能力, 对信号能够精确重构。它在电能质量数据压缩方面已经被广泛应用[2]。但目前提出的算法多基于传统的小波变换[3,4], 其计算量大, 不利于实时计算, 难以用低廉的硬件系统实现。
本文提出一种高效的基于db4小波变换系数的门限压缩算法, 该算法根据db4小波变换具有多分辨率分析的特性, 选择合适的分解层数, 有效地将各谐波分量分解到高频部分, 同时使信号能量主要集中在低频系数上, 在此基础上采用软阈值方法对小波低频系数进行压缩, 并采用游程编码的方式存储数据。试验表明, 该方法计算速度快, 压缩效果良好。
1 小波变换基本原理
设ψ (t) ∈L2 (R) (平方可积函数空间) , 若其傅里叶变换ψ (ω) 满足容许性条件[5]:
则ψ (t) 称为基本小波或母小波函数。
ψ (t) 的伸缩平移系列:
称为由ψ (t) 生成的小波, a, b分别为尺度因子和时移因子。
小波变换是对信号的时间-尺度分析方法。设函数f (x) ∈L2 (R) , 其中L2 (R) 为由平方可积函数构成的Hilbert空间[6]。通过连续小波变换公式 (3) 可将函数f (x) 从时域变换到小波域, 并且以不同尺度下一系列小波系数的形式来表征f (x) 。
式中a, b∈R, a>0, 为与频率对应的尺度因子, b为与时间对应的时移因子。
可见, 母小波ψ (x) 通过改变尺度因子a, 可构成一个用来逼近信号f (x) 的小波函数系。
实际应用中常对尺度因子a采用二进制离散 (取a=2j, j为整数) , 对信号进行离散小波变换[7]。
2 小波阈值量化
阈值量化[8]方法具有能得到原始信号的最优近似估计、适应性广泛以及计算速度快等优点, 因而是小波降噪 (压缩) 中应用最广泛的一种方法。主要包含两个方面:一是根据信号的噪声水平确定阈值的大小;二是根据阈值处理小波变换系数。
通常施加阈值的方法包括硬阈值、软阈值和改进阈值3种。设dj (k) 为第j尺度上的小波系数, djλ (k) 为施加阈值后的小波系数, λ是阈值。
(1) 硬阈值。当小波系数的绝对值大于给定的阈值时, 令该系数保持不变;而当其小于给定的阈值时, 令其为零, 即
(2) 软阈值。当小波系数的绝对值大于给定的阈值时, 令该系数减去阈值;而当其小于给定的阈值时, 令其为零, 即
可见, 硬阈值是一种将小波系数中能量较小的系数置零的方法, 而软阈值是对大于阈值的小波系数进行“收缩”, 从而使处理后的信号平滑一些。硬阈值尽管是一种很方便的选择, 但是在信号平滑方面有所欠缺, 因此, 软阈值使用的较多。
(3) 改进阈值是软阈值和硬阈值的一个折中, 即当小波系数的绝对值大于给定的阈值时, 将小波系数减去阈值, 而当小波系数的绝对值小于阈值时, 不是将小波系数简单的置零, 而是平滑地减小为零。这样, 既保留了能量大的小波系数, 又使得小波系数在经过阈值处理后能够平滑过度。
通过小波变换得到多尺度的小波系数, 施加阈值的选择一般有2种:一是选择在所有尺度上使用同一个阈值;二是选择在各个尺度上使用不同的阈值。
3 游程编码方法
游程编码 (Run Length Encoding, REL) 又称为行程编码, 是一种对信源进行有效扩展符号集的编码方法, 是在哈夫曼编码基础上的改进和应用。主要用于信源符号重复出现所形成的符号串压缩。
游程编码的基本原理是:将信源符号中具有相同值的连续符号用一个符号值或串长代替 (连续符号构成一段连续的“行程”。行程编码因此而得名) , 使符号长度小于原始数据的长度。只在各行或各列数据的符号发生变化时, 一次记录该符号及相同符号重复的个数, 从而实现数据的压缩。
常见的游程编码格式包括PCX, Packbits, TGA以及ILBM。
例如:5555557777733322221111111
游程编码为: (5, 6) (7, 5) (3, 3) (2, 4) (1, 7)
可见, 游程编码的位数远少于原始字符串的位数。
在对图像数据进行编码时, 将沿一定方向排列的具有同等灰度值的像素看成是连续符号, 用字串表示并代替这些连续符号, 从而大幅度减少数据量[9]。
游程编码的记录方式有两种:一是逐行记录每个游程的终点列号;二是逐行记录每个游程的长度 (像元数)
第一种方式:
这个栅格图形就记作:
A, 3, B, 5
A, 1, C, 4, A, 5
第二种方式记作:
A, 3, B, 2
A, 1, C, 3, A, 1
游程编码是连续精确的编码, 在传输过程中, 若其中一位符号发生错误, 即可影响整个编码序列, 使游程编码无法无失真地还原回原始数据。
游程长度在栅格加密后, 数据量没有明显增加, 压缩率较高, 运算简单, 且易于检索、叠加合并等操作, 适用于机器存储容量较小, 需大量压缩数据, 且要避免复杂的编、解码运算, 增加处理及操作时间的情况。
4 仿真分析
选择小波基的原则是[10], 在进行数据压缩时需要选择时频两域都具有良好局域性、且对暂态信号较为灵敏的小波。为确保重构信号的稳定和不失真, 需要采用具有线性相位的小波, 同时结合小波函数的性质可知db小波较符合这一要求, 通过实验对比, 本文选用db4小波。
本文对所提出的压缩方案进行Matlab仿真验证, 原始信号为电流信号, 其采样点为4300个点。原始信号波形如图2所示。
通过db4小波对原始信号进行3层分解, 得到的小波系数如图3所示。
由图3可知, 该小波系数的长度也是4300个元素的一维数组, 但是在这些小波系数中含有许多能量较低的系数, 对于信号重构影响不大, 因而可将这些系数置为0。本文选择软阈值对小波系数进行处理, 得到新的小波系数如图4所示。
将阈值处理后的小波系数用于重构, 重构信号如图5所示。可见, 阈值处理后的小波系数能够对原始信号进行很好的重构, 所重构的信号失真度小, 尤其信号的局部特征得到了很好的保留。
在存储数据的过程中不难发现, 经过阈值处理的小波系数存在很多值为0的元素。若直接存储该数据则存储量较大, 因此本文采用游程编码的方式记录数据, 从而达到压缩数据量的目的。图6所示为经过游程编码后的数组。该数组中的元素个数为650个, 加上元素的位置信息, 需要存储的元素为1300个, 使存储和传输的数据量大大减少。
5 结语
本文基于db4小波变换的数据压缩算法具有计算速度快、逆变换简单、占用内存小等优点, 有效弥补了传统小波变换的不足。选用软阈值处理小波系数, 保证了信号的平滑效果, 同时采用游程编码方式存储数据, 大大减少了数据的存储量。仿真实验表明该算法对电能质量数据具有较好的压缩效果, 且重构信号精度高、计算速度快, 适用于实时性要求较高的场合。
参考文献
[1]杨夏飞.网络型电能质量监测系统通信的研究[D]哈尔滨:哈尔滨工业大学, 2010
[2]杨超颖.电能质量数据压缩算法研究[J]四川电力技术, 2012
[3]郑伟彦, 吴为麟.基于混合小波包的电能质量数据压缩算法[J]电工电能新技术, 2010
[4]夏淑华.小波变换在电能质量信号去噪中的研究[J]计算机仿真, 2011
[5]李建平.小波分析信息传输基础[M]北京:国防工业出版社, 2009
[6]程令营.Hilbert空间中几种框架性质的研究[D]山东:山东科技大学, 2011
[7]马伯宁等.基于GPU的二维离散小波变换快速计算[J]国防科技大学学报, 2011
[8]姜彩明, 江景涛.基于小波分析的信号噪声处理[J]仪器仪表用户, 2010
[9]武永红.基于小波变换的图像无损压缩算法研究[D]重庆:重庆大学, 2012
【基于数据压缩算法】推荐阅读:
数据压缩算法研究08-19
基于新数据的营销06-29
基于网络的轨迹数据01-26
基于真三维数据的建模09-13
基于数据驱动的测试论文09-29
基于关系数据库的地籍空间数据存储结构07-18
基于Web的数据挖掘01-10
基于数据库安全审计的研究11-26
基于数据挖掘技术的客户关系管理11-13
基于机载激光雷达数据的地形图成图技术浅析05-09