信息论与编码实验书
信息论与编码实验报告
信息论与编码实验报告信息论与编码实验报告实验一:英文文本信息量的计算一、实验目的及要求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、掌握求二元对称信道(BSC )互信息量和容量的设计方法; 3、 掌握二元扩展信道的设计方法并会求其平均互信息量。
二、实验原理若某信道输入的是N 维序列x ,其概率分布为q(x),输出是N 维序列y,则平均互信息量记为I(X;Y),该信道的信道容量C 定义为()max (X;Y)q x C I =。
三、实验内容1、给定BSC 信道,信源概率空间为信道矩阵 0.990.010.010.99P ⎡⎤=⎢⎥⎣⎦求该信道的I(X;Y)和容量,画出I(X;Y)和ω、C 和p 的关系曲线。
2 、编写一M 脚本文件t03.m ,实现如下功能:在任意输入一信道矩阵P 后,能够判断是否离散对称信道,若是,求出信道容量C 。
3、已知X=(0,1,2);Y=(0,1,2,3),信源概率空间和信道矩阵分别为XP 0 1 0.6 0.4= XPx 0 1 2 0.3 0.5 0.2=求: 平均互信息量;4、 对题(1)求其二次扩展信道的平均互信息I(X;Y)。
四、程序设计与算法描述1)设计思路1、信道容量()max (X;Y)q x C I 因此要求给定信道的信道容量,只要知道该信道的最大互信息量,即求信道容量就是求信道互信息量的过程。
程序代码:clear all,clc;w=0.6;w1=1-w;p=0.01;X=[0 1];P =[0.6 0.4];p1=1-p;save data1 p p1;I_XY=(w*p1+w1*p)*log2(1/(w*p1+w1*p))+(w*p+w1*p1)*log2(1/(w*p+w1*p1))-(p*log2(1/p)+p 1*log2(1/p1));C=1-(p*log2(1/p)+p1*log2(1/p1));fprintf('互信息量:%6.3f\n 信道容量:%6.3f',I_XY,C);p=eps:0.001:1-eps;p1=1-p;C=1-(p.*log2(1./p)+p1.*log2(1./p1));subplot(1,2,1),plot(p,C),xlabel('p'),ylabel('C');load data1;w=eps:0.001:1-eps;w1=1-w;I_XY=(w.*p1+w1.*p).*log2(1./(w.*p1+w1.*p))+(w.*p+w1.*p1).*log2(1./(w.*p+w1.*p1))-(p .*log2(1./p)+p1.*log2(1./p1));subplot(1,2,2),plot(w,I_XY)xlabel('w'),ylabel('I_XY');0.1 0.3 0 0.6 0.3 0.5 0.2 0 0.1 0.7 0.1 0.1P=实验结果:2、离散对称信道:当离散准对称信道划分的子集只有一个时,信道关于输入和输出对称。
信息论与编码实验报告
信息论与编码实验报告一、实验目的信息论与编码是一门涉及信息的度量、传输和处理的学科,通过实验,旨在深入理解信息论的基本概念和编码原理,掌握常见的编码方法及其性能评估,提高对信息处理和通信系统的分析与设计能力。
二、实验原理(一)信息论基础信息熵是信息论中用于度量信息量的重要概念。
对于一个离散随机变量 X,其概率分布为 P(X) ={p(x1), p(x2),, p(xn)},则信息熵H(X) 的定义为:H(X) =∑p(xi)log2(p(xi))。
(二)编码原理1、无失真信源编码:通过去除信源中的冗余信息,实现用尽可能少的比特数来表示信源符号,常见的方法有香农编码、哈夫曼编码等。
2、有噪信道编码:为了提高信息在有噪声信道中传输的可靠性,通过添加冗余信息进行纠错编码,如线性分组码、卷积码等。
三、实验内容及步骤(一)信息熵的计算1、生成一个离散信源,例如信源符号集为{A, B, C, D},对应的概率分布为{02, 03, 01, 04}。
2、根据信息熵的定义,使用编程语言计算该信源的信息熵。
(二)香农编码1、按照香农编码的步骤,首先计算信源符号的概率,并根据概率计算每个符号的编码长度。
2、确定编码值,生成香农编码表。
(三)哈夫曼编码1、构建哈夫曼树,根据信源符号的概率确定树的结构。
2、为每个信源符号分配编码,生成哈夫曼编码表。
(四)线性分组码1、选择一种线性分组码,如(7, 4)汉明码。
2、生成编码矩阵,对输入信息进行编码。
3、在接收端进行纠错译码。
四、实验结果与分析(一)信息熵计算结果对于上述生成的离散信源,计算得到的信息熵约为 184 比特/符号。
这表明该信源存在一定的不确定性,需要一定的信息量来准确描述。
(二)香农编码结果香农编码表如下:|信源符号|概率|编码长度|编码值|||||||A|02|232|00||B|03|174|10||C|01|332|110||D|04|132|111|香农编码的平均码长较长,编码效率相对较低。
信息论与编码实验报告
信息论与编码实验报告一、实验目的1.了解信息论与编码的基本概念和原理。
2.学习如何通过信息论与编码方法实现对数据的压缩和传输。
3.掌握信息论与编码实验的实验方法和实验技能。
4.提高实验设计、数据分析和报告撰写的能力。
二、实验内容1.通过对输入信源进行编码,实现对数据的压缩。
2. 比较不同编码方法的压缩效果,包括Shannon-Fano编码和霍夫曼编码。
3.通过传输信道对编码后的数据进行解码,还原原始信源。
4.分析并比较不同编码方法的传输效果,包括码率和传输质量。
三、实验原理1.信息论:熵是信息论中衡量信源不确定性的指标,熵越小表示信源的可预测性越高,在编码过程中可以压缩数据。
2. 编码方法:Shannon-Fano编码通过分治的方法将输入信源划分为不同的子集,分别进行编码;霍夫曼编码则通过构建最佳二叉树的方式,将较常出现的信源符号编码为较短的二进制码,较少出现的信源符号编码为较长的二进制码。
3.传输信道:信道可能存在误码和噪声,通过差错控制编码可以在一定程度上保障传输数据的正确性和完整性。
四、实验步骤1. 对给定的输入信源进行Shannon-Fano编码和霍夫曼编码。
2.计算编码后的码率,分析不同编码方法的压缩效果。
3.将编码后的数据传输到信道,模拟信道中的误码和噪声。
4.对传输后的数据进行解码,还原原始信源。
5.比较不同编码方法的传输质量,计算误码率和信噪比。
五、实验结果与分析1. 编码结果:通过对输入信源进行编码,得到了Shannon-Fano编码和霍夫曼编码的码表。
2.压缩效果:计算了不同编码方法的码率,比较了压缩效果。
3.传输结果:模拟信道传输后的数据,对数据进行解码,还原原始信源。
4.传输质量:计算了误码率和信噪比,分析了不同编码方法的传输质量。
六、实验总结通过本次实验,我深刻理解了信息论与编码的基本概念和原理,并掌握了信息论与编码实验的实验方法和实验技能。
在实验过程中,我遇到了一些困难,比如对编码方法的理解和实验数据的处理。
信息论与编码实验报告
信息论与编码实验报告一、实验目的本实验旨在通过实践,使学生们对信息论与编码理论有一个更深入的理解,掌握信息论与编码的基本原理和应用方法。
二、实验环境本次实验使用MATLAB软件来实现相关编码算法。
三、实验内容1.信息熵的计算信息熵是信息理论中的一个重要概念,用来度量一些信息源的不确定性。
在实验中,我们将计算给定的一组消息的信息熵。
首先,我们将给定的消息编码为二进制序列。
然后,我们根据信息熵的定义,使用公式计算信息熵:H(X) = -Σ(p(x) * log2(p(x)))其中,H(X)表示信息熵,p(x)表示消息x发生的概率。
2.香农编码的实现香农编码是一种无失真的编码方法,用于将离散的符号序列编码为二进制码字。
在实验中,我们将实现香农编码算法。
首先,我们需要计算给定符号序列中各个符号的概率。
然后,根据概率大小,将概率最高的符号分配最短的二进制码字,将概率较低的符号分配较长的二进制码字。
实现香农编码算法后,我们将计算编码后的码字的平均码长,并与信息熵进行比较,了解香农编码的效率。
3.赫夫曼编码的实现赫夫曼编码是一种常用的无失真编码方法,也被广泛应用于数据压缩中。
在实验中,我们将实现赫夫曼编码算法。
首先,我们需要计算给定符号序列中各个符号的概率。
然后,根据概率大小,使用最小堆数据结构构建赫夫曼树。
最后,根据赫夫曼树的性质,将每个符号的编码确定下来。
实现赫夫曼编码算法后,我们将计算编码后的码字的平均码长,并与信息熵进行比较,了解赫夫曼编码的效率。
四、实验结果与分析1.实验一结果我们选取了一个包含1000个等概率的二进制消息的序列进行实验。
通过计算,我们得到了该消息序列的信息熵为12.实验二结果我们选取了一个包含1000个符号的序列进行实验。
通过计算,我们得到了编码后的平均码长为2.8、与信息熵的比较发现,香农编码的效率很高。
3.实验三结果我们选取了一个包含1000个符号的序列进行实验。
通过计算,我们得到了编码后的平均码长为2.6、与信息熵的比较发现,赫夫曼编码的效率也很高。
信息论与编码实验指导书
没实验一 绘制二进熵函数曲线(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 p x x X P 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。
信息论与编码实验指导书
信息论与编码实验指导书1 课程实验目的本课程是一门实践性很强的专业课和核心课程,根据课程理论教学的需要安排了6学时的配套实验教学,主要内容涉及信息度量的计算方法、典型信源编码方法、典型信道容量计算方法和数据压缩方法四个实验,这四个实验的开设一方面有助于学生消化、巩固课程理论教学的知识,另一方面又可培养学生实践动手能力,同时为后续课程做好准备。
2 课程实验要求2.1 课程实验准备要求(1)课程实验主要为设计性实验,要求学生熟悉掌握在VC环境下编写和调试C++程序的方法。
(2)要求学生在实验前复习实验所用到的预备知识。
可以查阅教材或者相关的参考资料,这需要学生有自主的学习意识和整理知识的能力。
(3)根据实验项目,设计相关的数据结构和算法,再转换为对应的书面程序,并进行静态检查,尽量减少语法错误和逻辑错误。
上机前的充分准备能高效利用机时,在有限的时间内完成更多的实验内容。
2.2 课程实验过程要求(1)生成源代码。
将课前编写好的书面代码,利用VC自带的编辑器尽快输入为转换为源代码;(2)程序调试和软件测试。
要求学生熟练掌握调试工具,调试正确后,认真整理源程序和注释,给出带有完整注释且格式良好的源程序清单和结果。
(3)完成实验报告。
根据实验内容和完成情况,按照附件1给定的格式完成课程实验报告的编写。
2.3 课程实验报告要求在每次课程实验后要及时进行总结和整理,并编写课程实验报告。
报告格式按江西蓝天学院实验报告纸格式填写。
实验一二维随机变量信息熵的计算[实验目的]掌握二变量多种信息量的计算方法。
[实验学时]2学时[实验准备]1.熟悉二变量多种信息量的计算方法,设计实验的数据结构和算法;2.编写计算二维随机变量信息量的书面程序代码。
[实验内容及步骤]离散二维随机变换熵的计算说明:(1)利用random函数和归一化方法构造一个二维离散随机变量(X,Y);(2)分别计算X与Y的熵、联合熵、条件熵:H(X)、H(Y)、H(X,Y)H(X|Y)、I(X|Y);(3)对测试通过的程序进行规范和优化;(4)编写本次实验的实验报告。
信息论实验报告(实验三、香农编码)
学生实验报告 院别 电子工程学院课程名称 信息论与编码 班级实验名称 实验三、香农编码 姓名实验时间 学号指导教师 成绩报 告 内 容 一、实验目的和任务1、理解信源编码的意义; 2、熟悉 MATLAB 程序设计; 3、掌握香农编码的方法及计算机实现; 4、 对给定信源进行香农编码,并计算编码效率;二、实验原理介绍给定某个信源符号的概率分布,通过以下的步骤进行香农编码1、信源符号按概率从大到小排列;12.......n p p p ≥≥≥2、确定满足下列不等式的整数码长i K 为()()1i i i lb p K lb p -≤<-+3、为了编成唯一可译码,计算第i 个消息的累加概率:4、将累加概率i P 变换成二进制数;5、取i P 二进制数的小数点后i K 位即为该消息符号的二进制码字。
三、实验设备介绍1、计算机2、编程软件MATLAB6.5以上四、实验内容和步骤对如下信源进行香农编码,并计算编码效率。
12345670.200.190.180.170.150.100.01X a a a a a a a P ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦(1)先对信源概率进行从大到小的排序(2)计算第i 个消息的累加概率以及每个消息的码长K (i )11()i i k k P p a -==∑(3)调用子函数将累加概率的十进制表示转换成二进制(4)取第i个累加概率二进制的小数点后的K(i)位,即为该消息符号的二进制码字。
五、实验数据记录六、实验结论与心得通过本次实验,加强了对matlab程序的学习,进一步提高了我的编程能力。
信息论与编码实验报告
信息论与编码实验报告信息论与编码实验报告一、引言信息论与编码是现代通信领域中的重要理论基础,通过对信息的量化和编码方式的设计,可以提高通信系统的传输效率和可靠性。
本实验旨在通过对信息论与编码的实际应用进行探索,加深对相关理论的理解和掌握。
二、实验目的1. 了解信息论与编码的基本概念和原理;2. 学习使用信息论与编码的工具和方法;3. 进行实际的编码实验,验证理论的有效性。
三、实验内容1. 信息熵的计算信息熵是信息论中的重要概念,用于衡量信息的不确定性。
我们选择一个简单的例子来计算信息熵,假设有一个硬币,正反面出现的概率分别为0.5。
根据信息熵的公式,我们可以计算出该硬币的信息熵为1比特。
2. 信道容量的计算信道容量是指在给定信道带宽和信噪比条件下,信道能够传输的最大数据率。
我们选择一个高斯信道作为实验对象,通过改变信噪比来计算信道容量。
实验结果显示,信噪比越高,信道容量越大。
3. 奇偶校验码的设计与实现奇偶校验码是一种简单的错误检测码,可以用于检测数据传输过程中的错误。
我们设计了一个简单的奇偶校验码方案,并通过编程实现了该方案。
实验结果表明,奇偶校验码能够有效地检测出数据传输中的错误。
4. 哈夫曼编码的设计与实现哈夫曼编码是一种有效的数据压缩算法,通过对出现频率较高的字符进行短编码,可以实现数据的高效传输和存储。
我们选择一段文本作为实验对象,通过统计字符出现频率并设计相应的哈夫曼编码表,成功地对文本进行了压缩。
四、实验结果与分析通过实验,我们成功地计算了信息熵和信道容量,并验证了理论的准确性。
在奇偶校验码的实验中,我们发现该码能够有效地检测出单比特错误,但对于多比特错误的检测能力有限。
在哈夫曼编码的实验中,我们成功地对文本进行了压缩,并获得了较高的压缩比。
五、实验总结通过本次实验,我们深入了解了信息论与编码的基本概念和原理,并通过实际操作加深了对相关理论的理解。
实验结果表明,信息论与编码在通信系统中具有重要的应用价值,能够提高通信效率和可靠性。
信息论与编码技术实验指导书
2、写出程序代码, 3、写出在调试过程中出现的问题 , 4、对实验的结果进行分析。
实验六 模p信道编码实验 一 实验目的:掌握通过计算机实现模p信道编码 二实验要求: 对于给定的消息序列,按照模p信道编码的方法进行 计算机实现. 三实验原理 在实际生活中,有时侯“1”和“I”很相似。 p=37(符号的个数) 数字“0”-“9”和字母“A”-“Z”和空格 共37种符号。 “0” 0 “1” 1 ¨ “A” 10 “B” 11 设有某消息的符号序列为X=X1X2X3X4, 用下表的方式来求它们的和及累加和,然后加上 适当的监督元,使累加和是模37的倍数。 消息符号
型如下图:
在给定信源概率分布条件下, 各种熵的求解方法如下: 1) 信源熵 2) 条件熵
3) 联合熵
4) 交互熵 5) 信道容量 ◼一般离散信道容量对计算步骤总结如下:
4、 实验设备:计算机 c++ 五、实验报告要求 1、 画出程序设计的流程图, 2、 写出程序代码, 3、 写出在调试过程中出现的问题 , 4、 对实验的结果进行分析。
和 累加和 X1 X1 X1 X2 X1+X2 2*X1+X2 X3 X1+X2+X3 3*X1+2*X2+X3 X4 X1+X2+X3+X4 4*X1+3*X2+2*X3+X4
ψ X1+X2+X3+X4+ψ 5*X1+4*X2+3*X3+2*X4+ψ 四实验设备 计算机 c++ 五实验报告 1、画出程序设计的流程图, 2、写出程序代码, 3、写出在调试过程中出现的问题 , 实验目的:通过该实验,掌握通过计算机实验信息量 和信道容量的计算方法 2、 实验要求:对一个离散的无记忆信源,给定信源的输 入概率分布,给定一个信道特性,计算各种信息量和 熵,并计算信道容量。 3、 实验原理:
- 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两个码元,并将这两个概率相加作为一个新字母的概率,与未分配的二进制符号的字母重新排队。