信息论与编码实验书
信息论与编码实验报告

信息论与编码实验报告信息论与编码实验报告实验一:英文文本信息量的计算一、实验目的及要求a)实验目的1、通过本实验熟悉Matlab 软件编程环境2、编写M 文件实现对英文文本信息量的统计,掌握信息量、信源熵的计算方法b)实验要求1、了解matlab 中M 文件的编辑、调试过程2、编写程序实现对给定英文文本信息量的统计3、英文文本中字母不区分大小写,考虑空格的信息量,但不考虑标点符号的信息量4、建议英文文本采用txt 格式二、实验步骤及运行结果记录a)实验步骤1、查找各个英文字母及空格出现的频率2、在Matlab 中读取给定的英文文章3、计算英文文章的长度4、统计在该文章中各个字母及空格出现的次数并放入数组N 中5、计算各个字母和空格的信息量及整篇文章的信息量6、计算信源熵b)实验结果sumI = +003;H = 三、程序流程图四、程序清单,并注释每条语句五、实验小结通过本次实验熟悉了Matlab 软件编程环境和一些函数的功能及使用,掌握了信息量、信源熵的计算方法。
1 附一:开始读取英文文章计算文章的长度嵌套的for 循环语句假判断是否符合循环条件真if 否elseif 判断字是否为大写母输入相应的频率否elseif 判断是否为小写字母计算各个字母、空格及整篇文章的信息量是判断是否为小写字母是计算信源熵是放入数组N 中对应的位置放入数组N 中对应的位置放入数组N 中对应的位置结束附二: wenzhang=textread(‘实验一:english ‘,’\’); M=size(wenzhang); row=M(1,1); line=M(1,2); N=zeros(1,27); for i=1:row for j=1:line %读取英文文章%文章的长度ifdouble(wenzhang(i,j))>96&&double(wenz hang(i,j))double(wenzhang(i,j))>64&&double(wenz hang(i,j))N(1,double(wenzhang(i,j))-64)=N(1,doubl e(wenzhang(i,j))-64)+1; elseif double(wenzhang(i,j))==32N(1,27)=N(1,27)+1; end end end %统计各字母和空格出现的个数并存入N数组中。
信息论与编码实验指导书

信息理论与编码实验教学指导书(试用教材)电子信息工程系2019年4月实验1.1 汉明码的编译码实验板实验一、实验目的1. 学习汉明码编译码的基本概念; 2. 掌握汉明码的编译码方法; 3. 验证汉明码的纠错能力。
二、实验仪器1. RZ9681实验平台 2. 实验模块: ● 主控模块● 信道编码与频带调制模块-A4 ● 频带解调与信道译码模块-A5 3. 100M 双通道示波器 4. 信号连接线 5. PC 机(二次开发)三、实验原理3.1汉明编译码介绍汉明码(Hamming Code )是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。
汉明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反(也是原来是1就变成0,原来是0就变成1)来将其纠正。
3.2汉明编译码原理汉明码编码采用()4,7汉明码,信息位数4=k ,监督位数3=-=k n r ,可以纠一位错码,生成矩阵⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1101000101010001100101110001G ,编码情况见表 1。
表 1()4,7 Hamming 编码表汉明码译码计算校正子[]321,,S S S S =,其中24561a a a a S ⊕⊕⊕= 13562a a a a S ⊕⊕⊕= 03463a a a a S ⊕⊕⊕=校正子S 的值决定了接收码元中是否有错码,并且指出错码的位置,见表2。
表2 错码位置示意3.3 举例说明信息位10013456=a a a a ,根据表 1()4,7 Hamming 编码表,编码为1001100,如果在信道传输的过程中产生一位误码,编码接收时变为1101100,我们计算校正子:124561=⊕⊕⊕=a a a a S 113562=⊕⊕⊕=a a a a S 003463=⊕⊕⊕=a a a a S校正子110=S ,查找表2 错码位置示意,5a 产生误码,则译码输出信息位1001。
信息论与编码实验2-实验报告

信息论与编码实验2-实验报告信息论与编码实验 2 实验报告一、实验目的本次信息论与编码实验 2 的主要目的是深入理解和应用信息论与编码的相关知识,通过实际操作和数据分析,进一步掌握信源编码和信道编码的原理及方法,提高对信息传输效率和可靠性的认识。
二、实验原理(一)信源编码信源编码的目的是减少信源输出符号序列中的冗余度,提高符号的平均信息量。
常见的信源编码方法有香农编码、哈夫曼编码等。
香农编码的基本思想是根据符号出现的概率来分配码字长度,概率越大,码字越短。
哈夫曼编码则通过构建一棵最优二叉树,为出现概率较高的符号分配较短的编码,从而实现平均码长的最小化。
(二)信道编码信道编码用于增加信息传输的可靠性,通过在发送的信息中添加冗余信息,使得在接收端能够检测和纠正传输过程中产生的错误。
常见的信道编码有线性分组码,如汉明码等。
三、实验内容与步骤(一)信源编码实验1、选取一组具有不同概率分布的信源符号,例如:A(02)、B (03)、C(01)、D(04)。
2、分别使用香农编码和哈夫曼编码对信源符号进行编码。
3、计算两种编码方法的平均码长,并与信源熵进行比较。
(二)信道编码实验1、选择一种线性分组码,如(7,4)汉明码。
2、生成一组随机的信息位。
3、对信息位进行编码,得到编码后的码字。
4、在码字中引入随机错误。
5、进行错误检测和纠正,并计算错误纠正的成功率。
四、实验结果与分析(一)信源编码结果1、香农编码的码字为:A(010)、B(001)、C(100)、D (000)。
平均码长为 22 比特,信源熵约为 184 比特,平均码长略大于信源熵。
2、哈夫曼编码的码字为:A(10)、B(01)、C(111)、D (00)。
平均码长为 19 比特,更接近信源熵,编码效率更高。
(二)信道编码结果在引入一定数量的错误后,(7,4)汉明码能够成功检测并纠正大部分错误,错误纠正成功率较高,表明其在提高信息传输可靠性方面具有较好的性能。
信息论与编码技术实验报告

《信息论与编码技术》实验报告实验一:请根据公式-plogp ,说明小概率事件和大概率事件对熵的贡献。
解:先做图,然后分析。
将公式写为)(log )(2p p p f -=对它编写计算和画图程序如下:p=0:0.01:1;x=-p.*log2(p);plot(p,x);从图中曲线看出,小概率事件和大概率事件的情况下,熵值都很低,贡献很小,在概率为0.5附近时熵值最大,故此时对熵的贡献最大。
实验二:请对a 、b 、c 霍夫曼编码,它们的概率是0.6、0.3、0.1。
并以此对符号串ababaacbaa 编码和译码。
解:编码步骤分为:事件排序,符号编码,信源编码,信道编码。
MATLAB 程序:clc;a=0.3;b=0.3;c=0.4; %%%霍夫曼编码A=[a,b,c];A=fliplr(sort(A)); %%%降序排序if (a==b)&(a>c), %%实现了当a,b,c 其中两概率相同时的编码,及3值均不同时的编码 u='a';x=a;v='b';y=b;w='c';z=c;elseif (a==b)&(a<c),u='c';x=c;v='a';y=a;w='b';z=b;elseif (c==b)&(c>a),u='b';x=b;v='c';y=c;w='a';z=a;elseif (c==b)&(c<a),u='a';x=a;v='b';y=b;w='c';z=c;elseif(a==c)&(a>b),u='a',x=a;v='c',y=c;w='b',z=b;elseif(a==c)&(a<b),u='b';x=b;v='a';y=a;w='c';z=c;elseif A(1,1)==a,u='a';x=a;elseif A(1,1)==b,u='b';x=b;elseif A(1,1)==c,u='c';x=c;endif A(1,2)==a,v='a';y=a;elseif A(1,2)==b,v='b';y=b;elseif A(1,2)==c,v='c';y=c;endif A(1,3)==a,w='a';z=a;elseif A(1,3)==b,w='b';z=b;elseif A(1,3)==c,w='c';z=c;endend %%%x,y,z按从大到小顺序存放a,b,c的值,u,v,w存对应字母if x>=(y+z),U='0';V(1)='0';V(2)='1';W(1)='1';W(2)='1';else U='1';V(1)='0';V(2)='0';W(1)='1';W(2)='0';enddisp('霍夫曼编码结果:')if u=='a',a=fliplr(U),elseif u=='b',b=fliplr(U),else c=fliplr(U),end if v=='a',a=fliplr(V),elseif v=='b',b=fliplr(V),else c=fliplr(V),end if w=='a',a=fliplr(W),elseif w=='b',b=fliplr(W),else c=fliplr(W),end %%%编码步骤为:信源编码,信道编码disp('信源符号序列:')s='ababaacbaa' %%%信源编码q=[];for i=s;if i=='a',d=a;elseif i=='b';d=b;else d=c;end;q=[q,d];endm=[]; %%%符号变数字for i=q;m=[m,str2num(i)];endP=[1,1,1,0;0,1,1,1;1,1,0,1];G=[eye(3),P];%%%信道编码%%%接下来的for循环在程序中多次使用,此处作用是将已编码组m每3个1组放入mk中进行运算之后存入Ck数组中,每次mk中运算结束之后清空,再进行下一组运算,而信道编码结果数组C则由C=[C,Ck]存入每组7个码。
信息论与编码实验指导书

《信息论与编码》实验指导书邹东尧等编计算机与通信工程学院信息与通信工程系2010年10月绪论随着信息产业的飞速发展,对从事信息、通信、电子工程类等专业的人员的要求也越来越高,而《信息论与编码》是这类专业的专业必修课,这门课主要介绍了有关信息论的基本原理以及信源编码、信道编码的内容。
通过理论与实践的结合,才能更好的领会知识的真谛。
《信息论与编码》结合实验的实践,让学生更能深刻的理解和掌握这门课的基本概念、基本理论,并培养学生的动手实践能力。
本实验指导书正是配合教学计划的实验教学而编写,主要是基于matlab 仿真软件对信源编解码和信道容量进行仿真。
本书共有三个实验:绘制信源熵函数曲线、哈夫曼编解码和离散信道容量,为实验大纲要求的必做实验。
本书主要由邹东尧编写,主要参考了李祖贺等编写的《信息论与编码》实验指导书,并得到了李祖贺等老师的大力支持,特此对他们表示衷心的感谢!由于时间仓促,错误难免,恳请读者谅解和指正!郑州轻工业学院计算机与通信工程学院信息与通信工程系2010年10月目录实验一绘制信源熵函数曲线 (4)实验二哈夫曼编解码 (7)实验三离散信道容量 (11)1实验一绘制信源熵函数曲线一、实验目的1.掌握离散信源熵的原理和计算方法。
2.熟悉matlab软件的基本操作,练习应用matlab软件进行信源熵函数曲线的绘制。
3.理解信源熵的物理意义,并能从信源熵函数曲线图上进行解释其物理意义。
二、实验原理1.离散信源相关的基本概念、原理和计算公式产生离散信息的信源称为离散信源。
离散信源只能产生有限种符号。
假定X是一个离散随机变量,即它的取值范围R={x1,x2,x3,…}是有限或可数的。
设第i个变量x i发生的概率为p i=P{X=x i}。
则:定义一个随机事件的自信息量I(x i)为其对应的随机变量x i出现概率对数的负值。
即:I(x i)= -log2p(x i)定义随机事件X的平均不确定度H(X)为离散随机变量x i出现概率的数学期望,即:∑∑-==i ii ii ixpxpxIxpXH)(log)()()()(单位为比特/符号或比特/符号序列。
信息论与编码实验报告

信息论与编码实验报告一、实验目的本实验主要目的是通过实验验证信息论与编码理论的基本原理,了解信息的产生、传输和编码的基本过程,深入理解信源、信道和编码的关系,以及各种编码技术的应用。
二、实验设备及原理实验设备:计算机、编码器、解码器、信道模拟器、信噪比计算器等。
实验原理:信息论是由香农提出的一种研究信息传输与数据压缩问题的数学理论。
信源产生的消息通常是具有统计规律的,信道是传送消息的媒体,编码是将消息转换成信号的过程。
根据信息论的基本原理,信息的度量单位是比特(bit),一个比特可以表示两个平等可能的事件。
信源的熵(Entropy)是用来衡量信源产生的信息量大小的物理量,熵越大,信息量就越多。
信道容量是用来衡量信道传输信息的极限容量,即信道的最高传输速率,单位是比特/秒。
编码是为了提高信道的利用率,减少传输时间,提高传输质量等目的而进行的一种信号转换过程。
常见的编码技术有霍夫曼编码、香农-费诺编码、区块编码等。
三、实验步骤1.运行编码器和解码器软件,设置信源信息,编码器将信源信息进行编码,生成信道输入信号。
2.设置信道模拟器的信道参数,模拟信道传输过程。
3.将信道输出信号输入到解码器,解码器将信道输出信号进行解码,恢复信源信息。
4.计算信道容量和实际传输速率,比较两者的差异。
5.改变信道参数和编码方式,观察对实际传输速率的影响。
四、实验结果与分析通过实验,我们可以得到不同信道及编码方式下的信息传输速率,根据信道参数和编码方式的不同,传输速率有时会接近信道容量,有时会低于信道容量。
这是因为在真实的传输过程中,存在信噪比、传输距离等因素导致的误码率,从而降低了实际传输速率。
在实验中,我们还可以观察到不同编码方式对传输速率的影响。
例如,霍夫曼编码适用于信源概率分布不均匀的情况,可以实现数据压缩,提高传输效率。
而区块编码适用于数据容量较大的情况,可以分块传输,降低传输错误率。
此外,通过实验我们还可以了解到信息论中的一些重要概念,如信源熵、信道容量等。
信息论与编码实验指导书

《信息论与编码》实验指导书前言当前,信息论与编码已经成为电子信息类专业高年级学生必修的专业基础课。
尽管各个院校开设课程名称有所不同,但都是以香农信息论为核心内容的。
这是一门理论性和系统性很强的课程。
涉及多个学科,需要广泛数学知识。
为了能透彻掌握信息论基本概念和分析方法,做实验进行实践练习是不可缺少的环节。
通过综合性、验证性实验,可以加深对理论和概念的理解,增强分析和解决实际问题的能力。
为此,河北工业大学信息学院编写了《信息论与编码实验指导书》,由于可供参考的实验指导书有限,本书的不妥和错误之处,恳请读者予以批评指正。
马杰2008年2月目录实验一信息熵与图像熵计算--------------------------------------- 1实验二 Huffman 编码实验------------------------------------------ 6实验三算术编码实验------------------------------------------------ 11 实验四 CRC校验编码实验------------------------------------------17实验一信息熵与图像熵计算(2学时)一、实验目的1.复习MATLAB的基本命令,熟悉MATLAB下的基本函数。
2.复习信息熵基本定义, 能够自学图像熵定义和基本概念。
二、实验内容1.能够写出MATLAB源代码,求信源的信息熵。
2.根据图像熵基本知识,综合设计出MATLAB程序,求出给定图像的图像熵。
三、实验仪器、设备1.计算机-系统最低配置 256M内存、P4 CPU。
2.Matlab仿真软件- 7.0 / 7.1 / 2006a 等版本Matlab软件。
四、实验原理1. MATLAB中数据类型、矩阵运算、图像文件输入与输出知识复习。
2.利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。
自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。
信息论与编码实验报告

实验一:计算离散信源的熵一、实验设备:1、计算机2、软件:Matlab二、实验目的:1、熟悉离散信源的特点;2、学习仿真离散信源的方法3、学习离散信源平均信息量的计算方法4、熟悉 Matlab 编程;三、实验内容:1、写出计算自信息量的Matlab 程序2、写出计算离散信源平均信息量的Matlab 程序。
3、将程序在计算机上仿真实现,验证程序的正确性并完成习题。
四、求解:1、习题:A 地天气预报构成的信源空间为:()⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡6/14/14/13/1x p X 大雨小雨多云晴 B 地信源空间为:17(),88Y p y ⎡⎤⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦⎣⎦ 小雨晴 求各种天气的自信息量和此两个信源的熵。
2、程序代码:p1=[1/3,1/4,1/4,1/6];p2=[7/8,1/8];H1=0.0;H2=0.0;I=[];J=[];for i=1:4H1=H1+p1(i)*log2(1/p1(i));I(i)=log2(1/p1(i));enddisp('自信息I分别为:');Idisp('信息熵H1为:');H1for j=1:2H2=H2+p2(j)*log2(1/p2(j));J(j)=log2(1/p2(j));enddisp('自信息J分别为');Jdisp('信息熵H2为:');H23、运行结果:自信息量I分别为:I = 1.5850 2.0000 2.0000 2.5850信源熵H1为:H1 = 1.9591自信息量J分别为:J =0.1926 3.0000信源熵H2为:H2 =0.54364、分析:答案是:I =1.5850 2.0000 2.0000 2.5850 J =0.1926 3.0000H1 =1.9591; H2 =0.5436实验2:信道容量一、实验设备:1、计算机2、软件:Matlab二、实验目的:1、熟悉离散信源的特点;2、学习仿真离散信源的方法3、学习离散信源平均信息量的计算方法4、熟悉 Matlab 编程;三、实验内容:1、写出计算自信息量的Matlab 程序2、写出计算离散信源平均信息量的Matlab 程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息论与编码实验报告班级:姓名:学号:实验一 绘制二进熵函数曲线(2个学时)一、实验目的:1. 掌握Excel 的数据填充、公式运算和图表制作2. 掌握Matlab 绘图函数3. 掌握、理解熵函数表达式及其性质 二、实验要求:1. 提前预习实验,认真阅读实验原理以及相应的参考书。
2. 在实验报告中给出二进制熵函数曲线图 三、实验原理:1. Excel 的图表功能2. 信源熵的概念及性质()()[]()[]())(1)(1 .log )( .)( 1log 1log )(log )()(10 , 110)(21Q H P H Q P H b nX H a p H p p p p x p x p X H p p px x XP X ii i λλλλ-+≥-+≤=--+-=-=≤≤⎩⎨⎧⎭⎬⎫-===⎥⎦⎤⎢⎣⎡∑四、实验内容:用Excel 或Matlab 软件制作二进熵函数曲线。
具体步骤如下:1、启动Excel 应用程序。
2、准备一组数据p 。
在Excel 的一个工作表的A 列(或其它列)输入一组p ,取步长为0.01,从0至100产生101个p (利用Excel 填充功能)。
3、取定对数底c ,在B 列计算H(x) ,注意对p=0与p=1两处,在B 列对应位置直接输入0。
Excel 中提供了三种对数函数LN(x),LOG10(x)和LOG(x,c),其中LN(x)是求自然对数,LOG10(x)是求以10为底的对数,LOG(x,c)表示求对数。
选用c=2,则应用函数LOG(x,2)。
在单元格B2中输入公式:=-A2*LOG(A2,2)-(1-A2)*LOG(1-A2,2) 双击B2的填充柄,即可完成H(p)的计算。
4、使用Excel 的图表向导,图表类型选“XY 散点图”,子图表类型选“无数据点平滑散点图”,数据区域用计算出的H(p)数据所在列范围,即$B$1:$B$101。
在“系列”中输入X值(即p值)范围,即$A$1:$A$101。
在X轴输入标题概率,在Y轴输入标题信源熵。
实验二:香农编码软件实现(2个学时)1、实验目的(1)了解香农编码的基本原理及其特点;(2)熟悉掌握香农编码的方法和步骤;(3)掌握C语言或者Matlab编写香农编码的程序。
2、实验报告要求(1)简要总结香农编码的基本原理与特点(2)写出香农编码的基骤,画出实本步现香农编码的程序流程图(3)实现香农编码的Matlab或者C源程序3、实验内容(1)根据香农编码的方法和步骤,用香农编码编写程序(2)用编写的源程序验证书中例题的正确性。
4.实验总结A.香农编码步骤:a.按信源概率从大到小排序b.求概率和记为pac.求自信息量,确定码字长度ki,若自信息量为整数,则ki就等自信息量,否则则为大于自信息量最小的一个整数d.对pa进行二进制转换,若二进制的ki位,例如pa=0.25,ki=3;(0.25)=(0.01),那么得码字为010,不足补零B. 香农编码的基本原理与特点香农第一定理指出了平均码长与信源之间的关系,同时也指出了可以通过编码使平均码长达到极限值。
C.实验心得:通过这次实验我了解了香农编码的基本原理及其特点,明白了香农编码的基骤,对课本的内容有了进一步的了解。
实验三:Huffman编码软件实现(2个学时)1、实验目的(1)进一步熟悉Huffman编码过程;(2)掌握C语言递归程序的设计和调试技术(或者使用Matlab)。
2、实验要求(1)输入:信源符号个数r、信源的概率分布P;(2)输出:每个信源符号对应的Huffman编码的码字。
3、实验内容(1)算法1、从键盘输入组成信源C的字符个数N;2、从键盘输入信源C和组成信源的字符所对应的概率数组P;3、用Huffman函数来对信源进行二进制编码;先对P按从大到小进行排序,与此同时要把C中相应的字符的位置做相应的调换;用count数组来记录编码:在进行记录编码时是从数组count的最后一个开始存储的,而且,每进行一次编码所记录下来的两个编码'1','0'是按从数组的最后一个元素开始服从count[m-k-j]、count[m-k-j-1],其中k表示编码所进行的次数,j表示每次编码都只有'1','0';最后用函数int()pr来输出编码。
(2)部分伪代码:(二)算法#include <iostream>#include <math.h>#include<conio.h>struct HuffmanNode{char des[20];double p;int flag;int parent;int leftChild;int rightChild;char code[20];};void Init(HuffmanNode huffTree[],int n){for(int i = 0; i < 2 * n - 1 ; i++){if(i < n){printf("请描述第%d个信源符号:",i+1);scanf("%s",huffTree[i].des);printf("\t\t信源概率(0<p<1):");scanf("%lf",&huffTree[i].p);}elsehuffTree[i].p = 0;huffTree[i].parent = 0;huffTree[i].flag = 0;huffTree[i].leftChild = -1;huffTree[i].rightChild = -1;}}void Haffman(HuffmanNode huffTree[],int n){int j;for(int i = 0;i < n-1;i++){int x1, x2;double m1, m2;m1=1;m2=1;for(j=0;j<n+i;j++){if((huffTree[j].p<m1)&&huffTree[j].flag==0) {m1=huffTree[j].p;x1=j;}}huffTree[x1].flag = 1;for(j=0;j<n+i;j++){if(huffTree[j].p<m2&&huffTree[j].flag==0) {m2=huffTree[j].p;x2=j;}}huffTree[x2].flag = 1;huffTree[x1].parent = n+i;huffTree[x2].parent = n+i;huffTree[n+i].p = huffTree[x1].p+huffTree[x2].p;huffTree[n+i].leftChild=x1;huffTree[n+i].rightChild=x2;}}void HaffmanCode(HuffmanNode huffTree[], int n){int parent,child;for(int i = 0; i < n; i++){memset(huffTree[i].code,0,20);child=i;parent = huffTree[i].parent;while(parent!= 0){if(child==huffTree[parent].leftChild)strcat(huffTree[i].code,"1");elsestrcat(huffTree[i].code,"0");child=parent;parent=huffTree[parent].parent;}for (int j=0; j < strlen(huffTree[i].code)/ 2;j++){char temp = huffTree[i].code[j];huffTree[i].code[j]= huffTree[i].code[(strlen(huffTree[i].code) - 1) - j];huffTree[i].code[(strlen(huffTree[i].code) - 1) - j] = temp;}}}double enta(HuffmanNode huffTree[], int n){double k=0,hx=0;for(int i=0;i<n;i++){k+=huffTree[i].p*strlen(huffTree[i].code);hx+=-huffTree[i].p*log(huffTree[i].p)/log(2);}return hx/k;}void main(){printf(">>>>>>>>>>>>>>>>>>>>>>>>>>> Huffman编码程序\a<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");int i,n;printf("输入信源符号个数:");scanf("%d",&n);HuffmanNode *myhuffTree = new HuffmanNode[2*n-1];Init(myhuffTree,n);Haffman(myhuffTree,n);HaffmanCode(myhuffTree, n);system("cls");printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 编码结果\a<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");for(i = 0; i < n; i++)printf("信源符号:%20s\t概率=%0.5f\t编码为:%20s\n",myhuffTree[i].des,myhuffTree[i].p,myhuffTree[i].code); printf("\n\t\t编码效率为:%2.3f%%\n",enta(myhuffTree,n)*100);printf("\n\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<按任意键退出>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");getch();}4、实验报告(1)简要总结Huffman编码的原理与特点(2)写出Huffman编码的基本步骤,画出实现Huffman编码的程序流程图(3)给出Huffman编码的源程序,并给出实验过程中的测试结果(4)总结实验过程遇到的问题及解决方法5.实验心得a.. Huffman编码的基本步骤将信源消息依次排序取两个概率最小的字母分别配以0和1两个码元,并将这两个概率相加作为一个新字母的概率,与未分配的二进制符号的字母重新排队。