信息论与编码实验报告

六、 实验总结

费诺编码方法不唯一,费诺编码适合于对分组概率相等或相近的信源编码,费诺编码法编M进制码,M越大,信源的符号数越多,可能的编码方式就越多,编码过程就越复杂,当信源符号个数越多,编码效率就越低。

实验六 霍夫曼编码

一、 实验要求

1、根据霍夫曼编码的方法和步骤,编写霍夫曼编码程序,得到码字和编码效率;

2、用编写的源程序验证书中例题3.18的正确性,通过码长均值和均方差结果比较两种霍夫曼编码方法(用图形表示)。

二、 实验原理及理论分析

霍夫曼编码法的具体步骤如下: 以M个消息的D进制编码为例

1、计算M+r=D+m(D-1),m为整数,r为满足等式的最小正整数; 2、若r≠0,添加r个概率为0的信源消息; 3、将信源的M+r个消息按概率递减顺序排列;

4、将概率最小的D个消息分别编码为D-1,D-2,…,1,0;

5、将上述D个消息合并,求概率之和,并与余下的消息组成一个新的信源,再按概率递减顺序重新排列。如果概率之和与某个消息的概率相等,应把合并消息排在上面,这样可使合并消息重复编码的次数减少,使短码得到充分利用;

6、重复步骤4、5,直到合并消息的概率之和为1;

7、从最后一步开始,沿编码逆过程取各步骤得到的码符号,如此构成的码符号序列即为对应消息的码字。r个0消息是人为添加的,不需要取码符号。

三、 实验结果

四、 程序流程图

开始代码初始化判断信源是否合法否重新输入是否判断信源个数是否大于2是按递减顺序排列,并将概率最小的两个编号为1,2将概率最小的两个加起来,和其他的一起作为一个新信源重新按递减顺序排列,概率相同的向上排/向下排计算平均码长、方差、码长是均方差、信源熵、编码效率结束 五、 实验结果分析

因为在Matlab中,首位的0会被自动省略,不适合编码。所以这里利用1,2进行编码。从结果中可以看出,每次缩减信源的最后两个码字总是最后一位码元不同,前面各位码元相同。

霍夫曼编码法中,概率小的消息码长更大,概率大的消息码长更小。可以看出霍夫曼编码法得到的码并不是唯一的,因为对于每次选出的两个消息,哪个编码为“1”,哪个编码为“0”是可以任意选取的,由此可以得到不同的编码,而且平均码长是不会变的。

新组成的概率之和和原信源中的某概率相等时,将新组成的概率之和往上排和往下排,也会产生两种不同的码。这两种方法的平均码长也相同,但是均方

差不同,一般取均方差小的那种方法,这样译码会更简单。

六、 实验总结

与之前两种编码方法比较,可以看出香农编码法的编码效率最低,霍夫曼编码法的编码效率最高,费诺编码法编码效率居中。霍夫曼编码法得到的一定是最佳码。通常,在霍夫曼编码过程中,当缩减信源的概率分布重新排列时,应使合并得来的概率和尽量处于最高的位置,即往上排,这样可以使合并的元素重复编码次数减少,使短码得到充分利用。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4