资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
#实验名称实验一霍夫曼编码中信息熵及编码效率的实验#一、实验目的1. 掌握霍夫曼编码中信息熵的定义、性质和计算;2. 掌握霍夫曼编码中平均码字长度的定义和计算;3掌握霍夫曼编码中编码效率的定义和计算;4.正确使用C语言实现霍夫曼编码中信息熵、平均码长和编码效率的求取。二、实验内容1. 熟练列出霍夫曼编码中信息熵、平均码长和编码效率各自的计算公式;2. 正确使用C语言实现计算霍夫曼编码中信息熵、平均码长和编码效率的程序,并在VisualC+环境中验证。三、实验原理1. 霍夫曼编码的基本原理按照概率大小顺序排列信源符号,并设法按逆顺序分配码字字长,使编码的码字为可辨识的。2. 平均码长:L=EP(s.)*l.(单位为:码符号/信源符号)ii其中,p(s.)为信源s.在q个信源中出现的概率,】.为信源S.的二进制霍夫曼iiii编码。3. 信息熵:H(S)=-刀p(s.)*log2p(s)(单位为:比特/信源符号)i2i其中,P(s)为信源s.在q个信源中出现的概率。ii4. 编码效率:n=H(S)/L其中,H(S)为信息熵,L为平均码长。四、实验步骤:1. Huffman编码示例如下图:信源符号概率信源缩减过程编码码长S1S2S3545501001011010011222332. 根据Huffman编码的例子,用C语言完成计算霍夫曼编码中信息熵的程序的编写,并在VisualC+环境中验证;3. 根据Huffman编码的例子,用C语言完成计算霍夫曼编码中平均码长的程序的编写,并在VisualC+环境中验证;4. 根据Huffman编码的例子,用C语言完成计算霍夫曼编码中编码效率的程序的编写,并在VisualC+环境中验证;实验程序:/*霍夫曼编码信息熵、平均码长及编码效率的计算*/按照实验步骤的要求完成程序,正确计算霍夫曼编码的信息熵、/平均码长以及编码效率,并通过printf函数将三者的计算结果/打印出来#include#include#include#defineCH_Num5/信源符号个数/主函数voidmain()/编程1:定义double型数组gailv存放各信源符号出现的概率doublegailvCH_Num=0.4,0.2,0.2,0.15,0.05;/编程2:定义int型数组code_len存放各信源符号的霍夫曼编码intcode_lenCH_Num=2,2,2,3,3;/编程3:定义double型变量aver_Len、Hs和code_ratio,分别/对应信息熵、平均码长及编码效率,并初始化为0doubleaver_Len=0,Hs=0,code_ratio=0;inti;/编程4:利用for循环计算平均码长aver_Lenfor(i=0;iCH_Num;i+)aver_Len+=gailvi*code_leni;/编程5:利用for循环计算信息熵Hsfor(i=0;iCH_Num;+i)Hs+=-(gailvi*(log(gailvi)/log(2);/编程6:计算编码效率code_ratiocode_ratio二Hs/aver_Len;/编程7:利用三条printf语句分别打印平均码长、信息熵和编码效率printf(“平均码长=%lf比特/信源符号n,aver_Len);printf(信源=%lf码符号/信源符号n,Hs);printf(编码效率=%lfn,code_ratio);运行结果如下图:ItafftUi.rkC-iMIMOtlrukl-C+-ihufowl-K0MIBfiJdtft)HXQiIWtJU0G1)XJIQJ00口厦总曲叩二1剖亡ft磊口何範3蛆曲画丿电无曼删19佰圧息平均码七艮划闵枚丰的尊JI乎均码弋=2.2ooooo比特/倍源符号fgiO=2.084184码袴号/信涯符号编谒效率=6947356Presstinykeytouontinuu实验心得:通过本次试验加深了对霍夫曼编码的基本原理的理解以及计算公式的记忆。并使用C语言实现计算霍夫曼编码中信息熵、平均码长和编码效率的程序,并在VisualC+环境中验证,且结果正确。#
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号