一种哈夫曼编码的数值运算实现方法及电路技术

技术编号:23472788 阅读:32 留言:0更新日期:2020-03-06 14:04
本发明专利技术提供的一种哈夫曼编码的数值运算实现方法,包括:统计数据中各个字符的出现概率,得到字符集及相应的概率集;计算出数据的字符集中各个字符的编码长度,将各个字符的编码长度序列简称为码长集,根据概率集和码长集计算码长序列;根据码长序列,通过数值运算的方式输出哈夫曼编码,通过特别简便的方式计算出待编码的字符集的码长序列,然后对码长序列进行排序,直接生成字符集的编码;在避免构建哈夫曼树的情况下,获得与经典的哈夫曼范式编码同样的编码效果,消除构建哈夫曼树中的冗余计算和存储,提高了编码效率。本发明专利技术还提供的一种哈夫曼编码的数值运算实现电路,其实现电路简单易于实现,能源消耗低。

A numerical operation method and circuit of Huffman code

【技术实现步骤摘要】
一种哈夫曼编码的数值运算实现方法及电路
本专利技术涉及数据压缩
,更具体的,涉及一种哈夫曼编码的数值运算实现方法及电路。
技术介绍
哈夫曼编码是去除信源统计冗余的压缩编码技术。以二元编码为例,它是根据统计频次(概率)最小的两个信源字符合二为一来编码。在经典的哈夫曼编码方法中,主要依靠构建哈夫曼树、或者说根据父子节点的索引来生成编码表。现有的构建一颗哈夫曼树并生成编码表的主要步骤如下:1)根据待编码字符集{s1,s2,L,sn}以及它们的概率(频次){p1,p2,L,pn}构造二叉树集F:{T1,T2,L,Tn},其中树Ti中仅有一个带权的根节点,且其概率等于相应字符si的概率。2)在树集F中找到两棵根节点概率最小的树,以它们作为左右子树构造一棵新的二叉树,新二叉树根节点的概率是其左右子树根节点概率之和。3)在树集F中删除这两棵树,并将新的二叉树加入树集F。4)重复步骤2)和3)直到树集F中仅剩一棵树为止,这棵树就是哈夫曼树。5)自顶向下遍历整棵树,输出编码表。这种哈夫曼编码方法必须通过构建哈夫曼树来实现的,存在大量的冗余计算,占用大量存储空间且编码效率低,其电路实现上需要较多的元器件,复杂程度高。
技术实现思路
本专利技术为克服现有的通过构建哈夫曼树来实现的哈夫曼编码方法存在计算量大、占用大量存储空间且编码效率低的技术缺陷,提供一种哈夫曼编码的数值运算实现方法及电路。为解决上述技术问题,本专利技术的技术方案如下:一种哈夫曼编码的数值运算实现方法,包括以下步骤:S1:统计数据中各个字符的出现概率,得到字符集及相应的概率集;S2:计算出数据的字符集中各个字符的编码长度,将各个字符的编码长度序列简称为码长集,根据概率集和码长集计算码长序列;S3:根据码长序列,通过数值运算的方式输出哈夫曼编码。其中,所述步骤S1具体为:统计数据中各个字符的出现概率,得到字符集{s1,s2,...,sn}及相应的概率集{p1,p2,...,pn}。其中,所述步骤S2具体包括以下步骤:S21:设定字符集对应的码长集为{m1,m2,...,mn},初始值均为1;S22:将字符集、概率集、码长集进行打包,并按照概率pi从小到大的顺序排序;S23:计算每个哈夫曼编码合二为一过程中,权值最小的两个节点实质包含的字符数k;S24:将码长集中前k个字符的码长增加1位,即mi=mi+1,i=1,2,L,k;S25:设定一个中间变量count=p1+pk,将概率集前k个数据修改为count;S26:重复执行步骤S22-S25,执行n-2次,完成码长序列的计算。其中,在所述步骤S23中,所述的字符数k具体表达式为:其中,所述步骤S3具体为:将字符集、码长集进行打包,并按照码长mi从小到大排序,得到数据序列:q1=0,i=2,3,L,n-1;其中,qi的码长为mi的二进制即表示第i个字符对应的范式哈夫曼编码。一种应用哈夫曼编码的数值运算实现方法的电路,包括单片机、存储器、显示器、振荡电路、复位电路和加法器模块;其中:所述单片机输入端与所述振荡电路、复位电路输出端电性连接;所述单片机输出端与所述显示器电性连接;所述单片机与所述存储器、加法器模块电性连接,实现数据的交互,运用加法器模块与单片机结合实现哈夫曼编码的数值运算实现方法。其中,所述加法器模块包括74HC595串转并子模块、74LS283全加器子模块和74HC165并转串子模块;其中:所述74HC595串转并子模块输入端与所述单片机输出端电性连接;所述74HC595串转并子模块输出端与所述74LS283全加器子模块输入端电性连接;所述74LS283全加器子模块输出端与所述74HC165并转串子模块输入端电性连接;所述74HC165并转串子模块输出端与所述单片机电性连接。其中,所述单片机采用P87C51RD单片机。其中,所述存储器采用AT24C02储存器。其中,所述显示器采用LCD4002液晶显示器。上述方案中,74LS283全加器子模块为两个4位全加器组成的8为加法器,其用于实现步骤S23的码长序列加1运算,用于实现步骤S24的k值加1运算,用于实现步骤S25中对参数count的加运算,其余算法包括矩阵运算、排序、十进制转二进制等均在单片机中实现。与现有技术相比,本专利技术技术方案的有益效果是:本专利技术提供的一种哈夫曼编码的数值运算实现方法及电路,通过特别简便的方式计算出待编码的字符集的码长序列,然后对码长序列进行排序,直接生成字符集的编码;在避免构建哈夫曼树的情况下,获得与经典的哈夫曼范式编码同样的编码效果,消除构建哈夫曼树中的冗余计算和存储,提高了编码效率;其实现电路简单易于实现,能源消耗低。附图说明图1为本专利技术所述方法流程示意图;图2为根据码长集直接读取哈夫曼编码的示意图;图3为本专利技术所述电路连接示意图。具体实施方式附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。下面结合附图和实施例对本专利技术的技术方案做进一步的说明。实施例1如图1所示,一种哈夫曼编码的数值运算实现方法,包括以下步骤:S1:统计数据中各个字符的出现概率,得到字符集及相应的概率集;S2:计算出数据的字符集中各个字符的编码长度,将各个字符的编码长度序列简称为码长集,根据概率集和码长集计算码长序列;S3:根据码长序列,通过数值运算的方式输出哈夫曼编码。更具体的,所述步骤S1具体为:统计数据中各个字符的出现概率,得到字符集{s1,s2,...,sn}及相应的概率集{p1,p2,...,pn}。其中,所述步骤S2具体包括以下步骤:S21:设定字符集对应的码长集为{m1,m2,...,mn},初始值均为1;S22:将字符集、概率集、码长集进行打包,并按照概率pi从小到大的顺序排序;S23:计算每个哈夫曼编码合二为一过程中,权值最小的两个节点实质包含的字符数k;S24:将码长集中前k个字符的码长增加1位,即mi=mi+1,i=1,2,L,k;S25:设定一个中间变量count=p1+pk,将概率集前k个数据修改为count;S26:重复执行步骤S22-S25,执行n-2次,完成码长序列的计算。更具体的,在所述步骤S23中,所述的字符数k具体表达式为:更具体的,所述步骤S3具体为:将字符集、码长集进行打包,并按照码长mi从小到大排序,得到数据序列:q1=0,i=2,3,L,n-1;其中,qi的码长为mi的二进制即表示第i个字符对本文档来自技高网...

【技术保护点】
1.一种哈夫曼编码的数值运算实现方法,其特征在于,包括以下步骤:/nS1:统计数据中各个字符的出现概率,得到字符集及相应的概率集;/nS2:计算出数据的字符集中各个字符的编码长度,将各个字符的编码长度序列简称为码长集,根据概率集和码长集计算码长序列;/nS3:根据码长序列,通过数值运算的方式输出哈夫曼编码。/n

【技术特征摘要】
1.一种哈夫曼编码的数值运算实现方法,其特征在于,包括以下步骤:
S1:统计数据中各个字符的出现概率,得到字符集及相应的概率集;
S2:计算出数据的字符集中各个字符的编码长度,将各个字符的编码长度序列简称为码长集,根据概率集和码长集计算码长序列;
S3:根据码长序列,通过数值运算的方式输出哈夫曼编码。


2.根据权利要求1所述的一种哈夫曼编码的数值运算实现方法,其特征在于,所述步骤S1具体为:统计数据中各个字符的出现概率,得到字符集{s1,s2,...,sn}及相应的概率集{p1,p2,...,pn}。


3.根据权利要求2所述的一种哈夫曼编码的数值运算实现方法,其特征在于,所述步骤S2具体包括以下步骤:
S21:设定字符集对应的码长集为{m1,m2,...,mn},初始值均为1;
S22:将字符集、概率集、码长集进行打包,并按照概率pi从小到大的顺序排序;
S23:计算每个哈夫曼编码合二为一过程中,权值最小的两个节点实质包含的字符数k;
S24:将码长集中前k个字符的码长增加1位,即mi=mi+1,i=1,2,L,k;
S25:设定一个中间变量count=p1+pk,将概率集前k个数据修改为count;
S26:重复执行步骤S22-S25,执行n-2次,完成码长序列的计算。


4.根据权利要求3所述的一种哈夫曼编码的数值运算实现方法,其特征在于,在所述步骤S23中,所述的字符数k具体表达式为:


5.根据权利要求4所述的一种哈夫曼编码的数值运算实现方法,其特征在于,所述步骤S3具体为:将字符集...

【专利技术属性】
技术研发人员:周永雄陈入云范伟
申请(专利权)人:广东海洋大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1