高精度多环数据压缩方法与流程

文档序号:16815104发布日期:2019-02-10 14:18阅读:224来源:国知局
高精度多环数据压缩方法与流程

本发明涉及数据处理领域,尤其涉及高精度多环数据压缩方法。



背景技术:

对于数字信号处理,通常会遇到上级信号数据处理之后的输出数据位数与下级信号数据输入位数不匹配的情况。如果上级输出数据位数小于下级输入数据位数,直接将上级输出数据高位补0即可解决数据位数不匹配的问题。如果上级输出数据位数大于下级输入数据位数,数据位数匹配问题将变得比较复杂。现有的数据位数匹配方法具有计算复杂,处理精度有限,以及耗费系统资源等较多的问题。



技术实现要素:

为了解决上述问题,本文提出一种高精度多环数据压缩方法,可以在保证数据精度的前提下,压缩输出数据,减小输出数据位数,从而解决输出数据位数大于输入数据位数的问题,并且此方法同时实现了用低带宽传输高带宽信号数据的功能,从而有效的节省了系统资源。

具体的,高精度多环数据压缩方法,包含以下步骤:

s1,输入待压缩数据;

s2,根据目标数据位数,确定需压缩数据位数;

s3,将需压缩数据位数分解为n1,n2,...nt;其中,ni为第i次压缩数据位数,t为压缩总次数;

s4,循环执行t次单次压缩,每次压缩位数为分别为n1,n2,...nt;所述循环执行是指前一次压缩结果作为后一次的输入;

s5,输出压缩后数据。

优选的,所述单次压缩的具体过程为:根据本次压缩位数n,从输入数据的最高位开始取n位,判断此n位数值是否小于1,如果是,舍弃所取n位高位,右移数据位数记为0;否则,将输入数据整体右移n位,即舍弃输入数据的n位低位数据,右移数据位数记为n。

优选的,还包括多环处理步骤:所述多环处理步骤是指在执行s1-s5后,继续循环执行单环处理;单环处理的执行次数为m-1,m为需处理总环数,m≥2;所述循环执行是指前一环压缩结果作为后一环的输入;

所述单环处理包括以下步骤:计算压缩差量,压缩差量=s1中待压缩数据-前一环压缩后数据×2^前一环中tr-1次右移数据位数的总和;再将压缩差量作为输入,根据本环目标数据位数,确定本环需压缩数据位数;执行s3-s5,输出本环压缩后数据;其中,将需压缩数据位数分解为nr1,nr2,...nrt,s4中执行tr次单次压缩;

其中,r为当前环数;对应的,当前环中需压缩数据位数分解为nr1,nr2,...nrt,压缩次数为tr,以示区分;当r=2时,s6中所述前一环压缩后数据为s5中压缩后数据,tr=t。

优选的,s3所述需压缩数据位数分解采用数学中的整数分拆法。

本发明的有益效果在于:

1)能够根据需要快速设定压缩数据位数;

2)采用多环处理的方法,能够控制数据压缩精度;

3)实现了用低带宽传输高带宽信号数据的功能,有效地节省了系统资源。

附图说明

图1是本发明的系统图;

图2是本发明的实施例图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。

高精度多环数据压缩方法,包含以下步骤,如附图1和附图2所示:

s1,输入待压缩数据;

s2,根据目标数据位数,确定需压缩数据位数;具体的,需压缩数据位数=待压缩数据位数-目标数据位数;

s3,将需压缩数据位数分解为n1,n2,...nt;其中,ni为第i次压缩数据位数,t为压缩次数;此处的分解方法为数学中的整数分拆方法,也称为整数划分方法,是指将一个整数分解为n(此处为t)个整数相加的形式,是数学中的经典方法。

s4,循环执行t次单次压缩,每次压缩位数为分别为n1,n2,...nt;所述循环执行是指前一次压缩结果作为后一次的输入;

s5,输出压缩后数据。

优选的,所述单次压缩的方法为:根据本次压缩位数n,从输入数据的最高位开始取n位,判断此n位数值是否小于1,如果是,舍弃所取n位高位,右移数据位数记为0;否则,将输入数据整体右移n位,即舍弃输入数据的n位低位数据,右移数据位数记为n。

优选的,还包括多环处理步骤:所述多环处理步骤是指在执行s1-s5后,继续循环执行单环处理;单环处理的执行次数为m-1,m为需处理总环数,m≥2;所述循环执行是指前一环压缩结果作为后一环的输入;

当设定为1环时,不执行多环处理步骤,前述的s1至s5即构成第1环。

当设定为2环时,即m=r=2,本环中所指的上一环压缩后数据为s5中压缩后数据,tr=t,并仅执行一次。

当设定为m环时,执行s1至s5为第1环,并再重复m-1次单环处理,共计执行m环。

所述单环处理包括以下步骤:计算压缩差量,压缩差量=s1中待压缩数据-前一环压缩后数据×2^前一环中tr-1次右移数据位数的总和;再将压缩差量作为输入,根据本环目标数据位数,确定本环需压缩数据位数;执行s3-s5,输出本环压缩后数据;其中,将需压缩数据位数分解为nr1,nr2,...nrt,s4中执行tr次单次压缩;

其中,r为当前环数,取值范围为:2≤r≤m;对应的,当前环中需压缩数据位数分解为nr1,nr2,...nrt,压缩次数为tr,以示区分。

以下通过实施例详细说明本发明的实施步骤。

我们假设:待压缩数据为data_in,其数据位数为58;压缩之后数据由整数数据位integer_data和数据移位次数记录位compress_data组成,其中integer数据位数为11,compress_data数据位为6。我们进行一环数据压缩处理,五次数据压缩处理,每次数据压缩位数分配如下:

第一次数据压缩处理,压缩位数24;位数分配:输入数据data_in_num1,数据位数58;输出数据data_out_num1,数据位数34;

处理过程:将待压缩数据data_in的值赋给data_in_num1,并判断data_in_num1的高24位数据值,如果该数据值大于或等于1,data_out_num1等于data_in_num1右移24位的值;如果数据值小于1,data_out_num1等于data_in_num1低34位的值;记录数据移位位数,如果本次处理进行了移位操作,则compress_data1的值为24,如果没有进行移位操作,则compress_data1的值为0。

第二次数据压缩处理,压缩位数12;位数分配:输入数据data_in_num2,数据位数34;输出数据data_out_num2,数据位数22;

处理过程:与第一次数据处理过程类似,注意,此次输入数据data_in_num2的值是上一次数据处理输出数据data_out_num1的值,而且此次数据压缩位数减小为12,同理,如果本次处理进行了移位操作,则compress_data2的值为12,如果没有进行移位操作,则compress_data2的值为0。

第三次数据压缩处理,压缩位数6;:位数分配:输入数据data_in_num3,数据位数22;输出数据data_out_num3,数据位数16;

处理过程:与第二次数据处理过程类似,注意,此次输入数据data_in_num3的值是上一次数据处理输出数据data_out_num2的值,而且此次数据压缩位数减小为6,同理,如果本次处理进行了移位操作,则compress_data3的值为6,如果没有进行移位操作,则compress_data3的值为0。

第四次数据压缩处理,压缩位数3;位数分配:输入数据data_in_num4,数据位数16;输出数据data_out_num4,数据位数13;

处理过程:与第三次数据处理过程类似,注意,此次输入数据data_in_num4的值是上一次数据处理输出数据data_out_num3的值,而且此次数据压缩位数减小为3,同理,如果本次处理进行了移位操作,则compress_data4的值为3,如果没有进行移位操作,则compress_data4的值为0。

第五次数据压缩处理,压缩位数2;位数分配:输入数据data_in_num5,数据位数13;输出数据data_out_num5,数据位数11;

与第四次数据处理过程类似,注意,此次输入数据data_in_num5的值是上一次数据处理输出数据data_out_num4的值,而且此次数据压缩位数减小为2,同理,如果本次处理进行了移位操作,则compress_data5的值为2,如果没有进行移位操作,则compress_data5的值为0。

综上,经过一环数据处理,五次数据压缩,我们把原58位的数据压缩到17位数据输出,其中integer数据为data_out_num5,compress_data数据为compress_data1+compress_data2+compress_data3+compress_data4+compress_data5,则输出数据值为data_out_num5×2^compress_data。如果需要更高的数据精度,可以增加数据处理环数,下一环数据处理与上一环数据处理类似,只是需要注意环与环之间的是数据传递即可,即下一环待压缩数据等于原始数据减去上一环数据压缩输出

在此,我们用一个实际数据,来验证高精度多环数据压缩方法的功能及精度。我们将进行两环数据压缩处理,我们假设待压缩数据为58位的十进制数data_in=58’d1998034578446,第一环输出数据的位数设为17位,其中包括11位输出数据data_out=11’d0和6位移位位数数据compress_data=6’d0。经过第一环数据压缩方法处理之后,我们得到data_out=11’d1860,compress_data=6’d30。我们计算第一环输出数据误差=data_in-1860×=58’d874785806,第一环输出数据的数据精度=第一环输出数据/输入数据=1860×/data_in=58’d1997159792640/58’d1998034578446=0.9995621768。然后进行第二环数据压缩处理,即对第一环输出数据误差进行数据压缩方法处理,则输入数据即为误差数据,data_in_se=58’d874785806,第二环输出数据位数设为10位,其中包括4位输出数据data_out_se=4’d0和6位移位位数数据compress_data_se=6’d0。经过第二环数据压缩方法处理,我们得到data_out_se=4’d13,compress_data_se=6’d26。我们再次计算总的数据误差=data_in-1860×-13×=58’d2370574,总的输出数据精度=(第一环输出数据+第二环输出数据)/输入数据=(1860×230+13×226)/58’d1998034578446=0.9999988135。

综上实例,我们看到58位的输入数据经两环数据压缩方法处理,得到27位数据输出(这里只是举例说明,如果需要更高的数据压缩位数,可以根据实际情况合理调整输出数据位数),其输出数据精度高达99.99988135%。因此,我们证明高精度多环数据压缩方法能够实现在保证输出数据具有高精度的同时压缩输入数据位数的功能。由此,我们可以判定,高精度多环数据压缩方法的有效性和实用性,它既可以在保证数据精度的前提下,压缩数据输出,减小输出数据位数,同时也大幅减小了系统传输数据所须的带宽宽度,即节省系统资源。

需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和单元并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、rom、ram等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1