输电线路故障行波数据压缩方法技术领域
本发明涉及对大量数据进行编码处理以达到数据压缩存储的技术领域,
尤其涉及利用曲线的连续特性对其16进制数据文本进行差分和变长编码的数
据压缩方法。
背景技术
随着计算机技术的快速发展,各种系统数据量越来越大,给信息存储特
别是网络传输带来诸多的困难,已成为有效获取和使用信息的瓶颈。为了节
省信息的存储空间和提高信息的传输效率,必须对大量的实际数据进行压缩。
数据压缩是通过减少计算机中所存储数据或者通信传播中数据的冗余
度,达到增大数据密度,最终使数据的存储空间减少的技术。数据压缩就是
将字符串的一种表示方式转换为另一种表示方式,新的表示方式包含相同的
信息量,但是长度比原来的方式尽可能的短。压缩的理论基础是信息论,从
信息的角度来看,压缩就是去除掉信息中的冗余,即去除掉确定的或可推知
的信息,而保留不确定的信息,也就是用一种更接近信息本质的描述来代替
原有的冗余的描述,这个本质的东西就是信息量。
数据压缩跟编码技术联系紧密,压缩的实质就是根据数据的内在联系将
数据从一种编码映射为另一种编码。数据压缩按压缩的失真度分为无损压缩
与有损压缩。无损压缩技术主要有哈夫曼(Huffman)编码、算术(Arithmetiic)编
码、游程编码(RLE)、LZ编码。
数据压缩主要应用于两个方面:(1)传输。通过压缩发送端的原始数据,
并在接受端将压缩数据解码恢复,这样可有效地减少传输时间,增加信道带
宽。(2)存储。在存储时压缩原始数据,而在使用时解压,这将大量减小存储
介质的存储量。
发明内容
本发明要解决的技术问题是对连续曲线的16进制数据文本进行编码压
缩,能够实现无损压缩,获得的压缩比小于0.25,达到显著减小存储介质存
储量的目的。
为解决上述技术问题,本发明提供一种输电线路故障行波数据压缩方法,
所述方法利用曲线的连续特性对16进制数据文本进行连续差分获得用补码的
16进制表示的差分序列,将差分序列中的符号串分成8类分别用3位前缀码
标识,然后对各类符号串进行变长编码以减少数据存储量。
一种输电线路故障行波数据压缩方法,包括以下步骤:获取原始数据序
列相邻数据间的差分序列,保存差值补码的16进制形式;根据差分序列的特
性分成8类符号串,得到它们的概率值;对数据使用前缀码的方式按类进行
变长编码把符号串的特征信息表现在编码的最前面;获得压缩比的计算公式。
进一步地,利用曲线的连续特性获得的差分序列数值集中在-2、-1、0、1、
2之间,而用差值补码的16进制表示的数据主要含有000X,FFFX,0000,0001,
0002,FFFE,FFFF,很容易的将所有数据分成8类进行编码,不用穷举数据中
所有可能的信号避免了多次遍历数据文本,与现有的文本压缩算法相比简单
易于实现。在存储和传输过程中若中间某一位发生误码至多影响一个数据的
解码,对后续数据的解码没有影响可靠性高。在源数据中出现概率越高的符
号即0000,0001,0002,FFFE,FFFF,相应码字长度越短共3位;出现概率越小
的符号即XXXX型,相应码子长度越长共19位,从而达到用尽可能少的码符
号来表示源数据,达到压缩的效果,提高压缩率。
附图说明
图1是本发明输电线路故障行波数据压缩方法的步骤流程图;
图2是本发明的分类编码图。
具体实施步骤
请参阅图1,图1是本发明一种输电线路故障行波数据压缩方法的步骤流
程图。
所述压缩方法包括以下步骤:
步骤S-1,获取原始数据序列相邻数据间的差分序列,保存差值补码的16
进制形式。
在本步骤中,截取一条曲线上连续的150个点,组成一个数据序列s(i),
i=1,2,......,150,数据序列为:
s(150)=003D 003E 0040 003E 003D 003E 003E 003D 0040 0040 0042 0042
0041 0041 0043 0043 0043 0047 0047 0046 0049 004B 004A 0049 0048 004A
004C 004E 004E 004F 0050 0051 004F 0050 0050 0053 0050 0051 0052 0052
0052 0052 0050 0051 0054 0051 0050 0052 0051 0051 0052 0050 004F 004F
0051 0050 004F 004E 004A 004B 004C 004B 004E 004A 004B 004B 004C 004B
0049 004A 004A 004A 004A 0049 004B 004B 004B 004B 004C 004B 004D 004B
004C 004E 004D 004B 004E 004E 004E 004E 004D 004E 004F 0050 004F 0051
004F 0050 004F 0051 0051 0050 004E 004F 004D 0051 0052 0051 0050 004F
004E 004E 004E 004B 004F 004C 004F 004F 004D 004D 004D 004B 004C 004D
004B 004C 004A 004C 004C 004E 004E 004C 004E 004D 004D 004E 004E 004F
0050 0051 0050 0051 0052 0052 0053 0053 0053 0054 0055 0056
求相邻数据间的差值序列,默认最初的数据s(0)为0,那么第一个数据
s(1)便是第一个差值:
d(1)=s(1),d(2)=s(2)-s(1),d(3)=s(3)-s(2),......,d(150)=s(150)-s(N149),
保存差值补码的16进制形式,差分序列为:
d(150)=003D 0001 0002 FFFE FFFF 0001 0000 FFFF 0003 0000 0002 0000
FFFF 0000 0002 0000 0000 0004 0000 FFFF 0003 0002 FFFF FFFF FFFF 0002
0002 0002 0000 0001 0001 0001 FFFE 0001 0000 0003 FFFD 0001 0001 0000
0000 0000 FFFE 0001 0003 FFFD FFFF 0002 FFFF 0000 0001 FFFE FFFF 0000
0002 FFFF FFFF FFFF FFFC 0001 0001 FFFF 0003 FFFC 0001 0000 0001 FFFF
FFFE 0001 0000 0000 0000 FFFF 0002 0000 0000 0000 0001 FFFF 0002 FFFE
0001 0002 FFFF FFFE 0003 0000 0000 0000 FFFF 0001 0001 0001 FFFF 0002
FFFE 0001 FFFF 0002 0000 FFFF FFFE 0001 FFFE 0004 0001 FFFF FFFF FFFF
FFFF 0000 0000 FFFD 0004 FFFD 0003 0000 FFFE 0000 0000 FFFE 0001 0001
FFFE 0001 FFFE 0002 0000 0002 0000 FFFE 0002 FFFF 0000 0001 0000 0001
0001 0001 FFFF 0001 0001 0000 0001 0000 0000 0001 0001 0001
获得差分序列d(i)后仅通过加法计算就可以恢复原来的数据,差值的数据
与原始数据的位数相同,则每个s(i)和d(i)的建立和恢复都是可逆的,那么:
s(1)=d(1),s(2)=d(2)+s(1),s(3)=d(3)+s(2),......,s(150)=d(150)+s(149)。
步骤S-2,根据差分序列的特性分成8类符号串,得到它们的概率值即冗
余数据量。
在本步骤中,由于曲线的连续特性,选取的连续150个点的16进制数据
中99.3%的相邻数据间的差值集中在-2、-1、0、1、2之间。对这样的用补码
的16进制形式保存的差分序列,可以将其符号串分成8类。符号串中主要含
有000X,FFFX,0000,0001,0002,FFFE,FFFF,它们的概率分别为:
P 0000 = 37 150 , ]]> P 0001 = 36 150 , ]]> P 0002 = 17 150 , ]]> PFFFE = 15 150 , ]]> PFFFF = 28 150 ]]>
P 000 X = 10 150 , ]]> PFFFX = 6 150 , ]]> PXXXX = 1 150 . ]]>
步骤S-3,确定各类16进制符号串对应的前缀码。
在本步骤中,8种情况可以用3位二进制数表示,则0000,0001,0002,FFFE,
FFFF,000X,FFFX的前缀码分别为000,001,010,011,100,101,110,符号串
XXXX的前缀码为111。把这些前缀码统称为TAG段。
步骤S-4,对数据按类进行变长编码,请参阅图2。把符号串的特征信息
表现在编码的最前面,尽可能的避免保存冗余信息。
在本步骤中,编码包含TAG段和数据段:
TAG段
数据段
对8类符号串进行分类编码:
第1类,0000编码为000仅包含TAG段共3位;
000
代表0000,不用发送数据位
第2类,0001编码为001仅包含TAG段共3位;
001
代表0001,不用发送数据位
第3类,0002编码为010仅包含TAG段共3位;
010
代表0002,不用发送数据位
第4类,FFFE编码为011仅包含TAG段共3位7;
011
代表FFFE,不用发送数据位
第5类,FFFF编码为100仅包含TAG段共3位;
100
代表FFFF,不用发送数据位
第6类,000X编码为101加4位二进制数据共7位;
101
000X除去000后剩下的4位二进制编码
第7类,FFFX编码为110加4位二进制数据共7位;
110
FFFX除去000后剩下的4位二进制编码
第8类,XXXX编码为111加16位二进制数据共19位。
111
原16位二进制编码
在变长编码中,若码字长度严格按照所对应符号出现概率的大小逆序排
列,则其平均长度为最小,数据中0002,0001,0000,FFFF,FFFE占得比例最
大为88.7%,码字长度最短仅有3位;其次是000X,FFFX所占比例为10.7%,
码字长度共7位;XXXX型数据在150个数据中占的比例最小为0.6%,而码
字长度最长共19为,所以上述编码方式符合两者之间的逆序排列,码子平均
长度最小,提高了压缩效率,而且算法简单易于实现。
步骤S-5,获得压缩比的计算公式。
在本步骤中,根据各类符号串的概率和编码长度,所截取曲线的连续150
个点组成的数据序列的压缩比:P=0.22083,节省了大量的存储空间。