《信息论与编码》实验讲义

上传人:xzh****18 文档编号:34437500 上传时间:2018-02-24 格式:DOC 页数:11 大小:4.97MB
返回 下载 相关 举报
《信息论与编码》实验讲义_第1页
第1页 / 共11页
《信息论与编码》实验讲义_第2页
第2页 / 共11页
《信息论与编码》实验讲义_第3页
第3页 / 共11页
《信息论与编码》实验讲义_第4页
第4页 / 共11页
《信息论与编码》实验讲义_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《《信息论与编码》实验讲义》由会员分享,可在线阅读,更多相关《《信息论与编码》实验讲义(11页珍藏版)》请在金锄头文库上搜索。

1、信息论与编码实验讲义2学生实验守则1、进实验室前,必须根据每个实验的预习要求,阅读有关资料。2、按时进入实验室,保持安静和整洁,独立完成实验。3、实验开始前,应仔细检查仪器、设备是否齐备和完好。若有不全或损坏情况,应及时报告指导教师。4、爱护公物,正确使用实验仪器和设备,不得随意动用与本实验无关的仪器和设备。5、接线完毕,先自行检查,再请指导教师检查,确认无误后,方可接通电源。6、在实验过程中必须服从教师指导,严格遵守操作规程,精力高度集中,操作认真,要有严格的科学态度。7、实验进行中,严禁用手触摸线路中带电部分,严禁在未切断电源的情况下改接线路;若有分工合作的情况,必须要分工明确,责任分明,

2、操作要有序,以确保人身安全和设备安全。8、实验中若出现事故或发现异常情况,应立即关断电源,报告指导教师,共同分析事故原因。9、实验完毕,应报请指导教师检查实验报告,认为达到要求后,方可切断电源。并整理好实验装置,经指导教师检查后才能离开实验室。1实验一 绘制二进制熵函数曲线一、实验目的1掌握二进制符号熵的计算;2掌握MATLAB的应用;3掌握 Matlab 绘图函数;4掌握、理解熵函数表达式及其性质二、实验条件计算机一台,MATLAB仿真软件。三、实验内容(1)MATLAB的应用(请参阅相关书籍)(2)打开MATLAB,在命令窗口中输入eidt,弹出编辑窗口,如图1:图1 MATLAB的编辑窗

3、口(3)输入源程序:clear;x=0.001:0.001:0.999y=-x.*log2(x)-(1-x).*log2(1-x);plot(x,y);grid on(4)保存文件为entropy.m;(5)单击Debug菜单下的Run,或直接按F5执行;(6)执行后的结果图2:四、实验分析(1)熵函数是一个严格上凸函数(2)熵的极大值,二进符号的熵在 p(x1)=p(x2)=0.5 取得极大值2(3)调调整 p(x1)的取值步长,重画该曲线图 2 二进制符号熵函数图3实验二 一般信道容量迭代算法一、实验目的1掌握准对称信道信道容量的计算方法2掌握准对称信道信源输入概率分布的计算3掌握一般信道

4、容量迭代算法的原理4掌握应用MATLAB计算准对称信道的方法5掌握准对称信道的性质6掌握互信量的概念及与信道容量的关系二、实验条件计算机一台,MATLAB仿真软件。三、实验内容(1)MATLAB的应用(请参阅相关书籍)(2)打开MATLAB,在命令窗口中输入eidt,弹出编辑窗口,如图3:图3 MATLAB的编辑窗口(3)MATLAB 仿真建立一个函数 Channel.m 输入如下代码:function =Channel(ArrayP)Hxy=0;for i=1:size(ArrayP,2)Hxy=Hxy-ArrayP(1,i)*log2(ArrayP(1,i);end%Hxy=-1/2*lo

5、g2(1/2)-1/4*log2(1/4)-1/8*log2(1/8)-1/8*log2(1/8)x=0:0.01:1;Py=ArrayP*x;1-x;4Y=Py;result=;for i=1:size(Y,1)result(i)=0; for j=1:size(Y,2) result(i)=result(i)-Y(i,j)*log2(Y(i,j) ;endresult(i)=result(i)-Hxy;endplot(x,result,r);grid on在命令窗口输入:p=1/2 1/4 1/8 1/8;1/4 1/2 1/8 1/8;channel(p);得到计算结果如图 4图 4 对

6、于给定 P 后互信息量图5实验三 Huffman 编码一、实验目的1掌握变长编码原理2掌握二进制 Huffman 编码原理3掌握 Huffman 编码的最佳性二、实验条件计算机一台,MATLAB仿真软件。三、实验内容(1)MATLAB的应用(请参阅相关书籍)(2)打开MATLAB,在命令窗口中输入eidt,弹出编辑窗口,如图3:图3 MATLAB的编辑窗口(3)MATLAB 仿真建立一个函数 huffman.m 输入如下代码:function h,H,L=huffman(p)%变量 p 为所有符号出现概率所组成的概率向量%返回值 h 为利用 Huffman 编码算法编码后最后得到的编码结果%返

7、回值 H 为信源熵%返回值为进行 Huffman 编码后所得到的编码的码字长度if length(find(p10e-10) error(Not a prob.vector,component do not add to 1) end H=-sum(p.*log2(p)n=length(p);q=p;6m=zeros(n-1,n);for i=1:n-1q,L=sort(q);m(i,:)=L(1:n-i+1),zeros(1,i-1);q=q(1)+q(2),q(3:n),1;endfor i=1:n-1c(i,:)=blanks(n*n);endc(n-1,n)=0;c(n-1,2*n)=

8、1;for i=2:n-1c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)=1). -(n-2):n*(find(m(n-i+1,:)=1); c(n-i,n)=0;c(n-i,n+1:2*n-1)=c(n-i,1:n-1);c(n-i,2*n)=1;for j=1:i-1c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)=j+1)-1)+1:n*find(m(n-i+1,:)=j+1);endendfor i=1:nh(i,1:n)=c(1,n*(find(m(1,:)=i)-1)+1:find(m(1,:)=

9、i)*n);L1(i)=length(find(abs(h(i,:)=32);endL=sum(p.*L1)在命令窗口中输入:p=0.2 0.19 0.18 0.17 0.15 0.1 0.01h,H,L=huffman(p)得到该信源的熵: H =2.6087平均编码长度: L =2.7200编码结果发如下:h = 010011111010110011000可计算出编码效率为: 2.608795.HL7实验四 线性分组码的信道编码和译码一、内容编程实现线性分组码的信道编码和译码。二、要求1. 掌握线性分组码的编码和译码原理以及纠错原理2. 掌握 matlab 开发环境的使用(尤其是程序调试技

10、巧)3. 掌握 matlab 语言编程(尤其是位运算的操作)三、实验内容(1)MATLAB的应用(请参阅相关书籍)(2)打开MATLAB,在命令窗口中输入eidt,弹出编辑窗口,如图3:图3 MATLAB的编辑窗口(3)MATLAB仿真建立一个函数linecode.m输入如下代码:clear;K=3;for i=1:2kfor j=K:-1:1if rem(i-1,2(-j+K+1)2(-j+k)m(i,j)=1;elsem(i,j)=0;endendendg=1 0 0 1 1 1 0;0 1 0 0 1 1 1;0 0 1 1 1 0 1;8%产生码字空间code=m*g;c=rem(m*

11、g,2)%找出最小汉明距离d_min=min(sum(c(2:2k,:)dcode=rem(code/g,2)执行程序得到结果如下:c =0 0 0 0 0 0 00 0 1 1 1 0 10 1 0 0 1 1 10 1 1 1 0 1 01 0 0 1 1 1 01 0 1 0 0 1 11 1 0 1 0 0 11 1 1 0 1 0 0d_min =4dcode =0 0 00.0000 0.0000 1.0000-0.0000 1.0000 0.00000.0000 1.0000 1.00001.0000 0.0000 0.00001.0000 0.0000 1.00001.0000

12、 1.0000 0.00001.0000 1.0000 1.0000(4)测试线性分组码的纠错能力在命令窗口输入:g= 1 0 0 1 1 1 0;0 1 0 0 1 1 1;0 0 1 1 1 0 1;H=1 0 1 1 0 0 0;1 1 1 0 1 0 0;1 1 0 0 0 1 0;0 1 1 0 0 0 1; A = 1 1 0; B = A*GB =1 1 0 1 2 2 1这不是我们想要的7 位编码字,MATLAB 做的是传统的矩阵乘法。为了得到击破要的码字,必须把所有偶数值改为0,把奇数值改为1。在这里使用除2 的余数 B = mod(B,2)B =91 1 0 1 0 0 1注意到B 中前3位是A,后3位是约束位。解码器探询误差时使用矩阵H : C = mod(B*H,2)C =0 0 0 0C完全是0,这表示没有需要校正的误差,所以解码器只是简单地去除掉约束位。现在假设在第3位发生了误差,所以解码器收到的信息是1 1 1 1 0 0 1,而不是1 1 0 1 0 0 1。现在, B(3) = B(3); C = mod(B*H,2)C =1 1 0 1由于我们选择的H,得到的结果是 1 1 0 1,与H矩阵的第3列相同,即第3位发生了错误,可以纠正为1 1 0 1 0 0 1。四、实验总结通过该实验可以验证,(7,3)线性分组码可以检测并同时纠正1位错误。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号