《信息论实验指导书要点.pdf》由会员分享,可在线阅读,更多相关《信息论实验指导书要点.pdf(17页珍藏版)》请在三一文库上搜索。
1、1 信息论与编码实验指导书 任课教师:刘亚荣 桂林理工大学电计系 2 Matlab 基础: 1、 变量不需指定类型,拿来就用;变量区分大小写 2、 向量定义: x=1/2, 1/4, 1/4(行向量 ); y=(0:360)*pi/180; 向量的转 置 x(列向量) 3、 .* ./ .运算,逐个元素进行运算。例x1=1/2, 1/4, 1/4, x2=2, 4, 4 , 则 x1*x2 没定义; x1*x2 有定义( =3) ;x1.*x2有定义(逐元素相乘 =1,1,1) 4、 变量值显示:如果一行的后面没有分号, 则显示出该行的变量结果。 如 a=3 显 示出 a=3。 5、画图命令
2、plot(x,y); x(向量)是一系列坐标, y (向量)是一系列值。 6、求和: sum(), 求积分:求微分: 符号微分 diff(f)求 f 对自由变量的一阶微分 diff(f,v) 求 f 对符号变量 v 的一阶微分 diff(f,v,n)求 f 对符号变量 v 求 n 阶微分 符号积分 int(f,v) 求表达式 f 的对符号变量 v 的不定积分 int(f,v,a,b) 求表达式 f 的对符号变量 v 的在(a,b) 范围内定积分 7 M 函数文件的基本结构 函数文件由 function语句引导,其基本结构为: function 输出形参表 =函数名 ( 输入形参表 ) 注释说明
3、部分 函数体语句 说明: (1) 关于函数文件名 : 函数文件名与函数名也可以不相同。当两者不同时, MATLAB 将忽略函数名而确认函数文件名,因此调用时使用函数文件名。 (2) 关于注释说明部分。 注释说明包括三部分内容:紧随函数文件引导行之后以% 开头的第一 注释行。第一注释行及之后连续的注释行。与在线帮助文本相隔一空行的注 释行。 (3) 关于 return语句。 执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。 通常,在函数文件中也可不使用return语句,这时在被调函数执行完成后自动 返回。 8 显示图形 1、%plot 函数绘制结果 t= 0:pi/100:2*pi;
4、 %定义数据点 y = sin(t); plot(t,y) %显示图形 grid on %显示网格 xlabel(t); %显示 x 轴的变量 3 ylabel(sin(t); %显示 y 轴的变量 2、%plot 函数中 x-y 副的使用 t = 0:pi/100:2*pi; y = sin(t); plot(t,y) grid on y2 = sin(t-0.25); y3 = sin(t-0.5); plot(t,y,t,y2,t,y3) 实验一:计算离散信源的熵 一、实验设备 : 1、计算机 2、软件: Matlab 二、实验目的 : 1 、熟悉离散信源的特点; 2 、学习仿真离散信源
5、的方法 3 、学习离散信源平均信息量的计算方法 4 、熟悉 Matlab 编程; 三、实验内容 : 1 、写出计算自信息量的Matlab 程序 2 、写出计算离散信源平均信息量的Matlab 程序。 3 、掌握二元离散信源的最大信息量与概率的关系。 4 、将程序在计算机上仿真实现,验证程序的正确性并完成习题。 四、实验报告要求 简要总结离散信源的特点及离散信源平均信息量的计算, 写出习题的 MATLAB 实现语句。 信息论基础: 自信息的计算公式 2 1 ( )log a I a p Matlab 实现: I=log2(1 /p) 或 I=-log2(p) 熵(平均自信息)的计算公式 22 1
6、1 1 ( )loglog qq iii iii H xppp p Matlab实现: HX=sum(-x.*log2(x);或者 h=h-x(i)*log2(x(i); 习题: 4 1. 甲地天气预报构成的信源空间为: 1111 ( ), 8482 X p x 小雨云 大雨晴 乙地信源空间为: 17 ( ), 88 Y p y 小雨晴 求此两个信源的熵。求各种天气的自信息量。 案:()1.75;( )0.5436H XH Y 2、某信息源的符号集由A、B、C、D、E组成,设每一符号独立出现,其出现的 概率分别为, 1/4 ,1/8 ,1/8 ,3/16 ,5/16 ,试求该信源符号的平均信息
7、量。 (答案: H(X) = 2.2272bit/符号) 3、设有四个消息分别以概率1/4 ,1/8 ,1/8 ,1/2 传送,每一消息的出现是相互 独立的。试计算其平均信息量。 (答案: H(X) =1.75bit/符号) 4. 设一个二元信源(只有0 和 1 两种符号)其概率空间为: ( ),1 X p xpp 01 编程画出 H 与 p 的关系,并说明当P呈什么分布时,平均信息量达到最大值。 (说明: H=-p.*log2(p)-(1-p).log2(1-p);) 实验二:验证熵的可加性与强可加性 1. 【例 2.6】 有一离散无记忆信源 123 111 ( ), 244 aa a X
8、p x 验证二次扩展信源 2 X的熵等于离散信源X的熵的 2 倍,即 2 ()2()H XH X 答案: 2 ()1.5;()3.0H XH X 5 2. 验证两个统计独立的信源,X Y,验证: ()()()H XYH XH Y 其中: 123 111 ( ) , 244 aa a X p x 123 111 ( ) , 3 3 3 bb b Y p y ()1.5,( )1.585()3.085H XH YH XY 3、条件熵的计算与熵的强可加性 验证离散二维平稳信源,满足: 12121 ()()(|)H X XH XH XX 某一离散二维平稳信源 01 2 11 4 1 ( ), 36 9
9、 4 X p x 12 X X 其联合概率分布 12 ()p X X为: Xj X2 0 1 2 0 1 2 编程计算: 1)联合熵 12 ()H X X 2)条件熵 21 (|)H XX 3)验证: 12121 ()()(|)H X XH XH XX 答案: 121 12121 ()1.5426;(|)0.8717 ()2.4144()(|)2.4144 H XH XX H X XH XH XX %联合熵的计算 1 4 1 18 0 1 18 1 3 1 18 1 18 7 36 0 6 HXY=0; for i=1:size(b,1) for j=1:size(b,2) if b(i,j)
10、0 HXY=HXY-b(i,j).*log2(b(i,j); end end end HXY 实验三:离散信道的平均互信息的计算 1. 【习题 3.1】 设信源 12 ( )0.6,0.4 Xxx p x 通过一干扰信道,接收到符号为 12 ,Yy y,其信道矩阵为: 51 66 31 , 44 P 1)求信源 X中事件 1 x 和 2 x 分别含有的自信息; 2)收到消息(1,2) j yj后,获得的关于(1,2) i x i的信息量; 3)求信源 X和输出变量 Y的信息熵; 4)信道疑义度(|)H XY和噪声熵(|)H YX; 5)接收到消息 Y后获得的平均互信息; 答案: 12 1112
11、2122 1.()0.737()1.3219 2.(;)0.0589, (;)0.263, (;)0.0931, (;)0.3219 3.()0.971,( )0.7219 4.(|)0.9635(|)0.7145 5.(;)0.0074 I xI x I xyI x yI xyI xy HXH Y H XYH YX I X Y 7 2. 二元信道的互信息与信源分布的关系 有二元信源: 01 ( )1 X p x 有二元信道,其传递矩阵为: 1 1 pp P pp , 其中0.2p,即传递矩阵 0.8 0.2 0.2 0.8 P 编程实现下面题目: 1)画出平均互信息(;)I X Y随信源分布
12、的关系曲线,并求出最大平均互信息。 验证:信道容量C(最大平均互信息)满足:1( )CHp 2)验证:信道容量C(最大平均互信息)满足:1()CHp 实验四:离散信道及其信道容量 一、实验设备 : 1、计算机 2、软件: Matlab 二、实验目的 : 1 、了解信道传输概率的状态图和信道转移概率矩阵特点; 2 、了解什么是信道容量和最佳输入概率分布; 3 、列出计算信道容量和平均互信息的计算步骤; 4 、熟悉 Matlab 编程; 三、实验内容 : 1 、写出几种特殊离散信道的信道容量计算的 Matlab 程序。 2 、将程序在计算机上仿真实现,验证程序的正确性。 3 、完成习题 四、实验报
13、告要求 简要总结离散信道的特点及信道容量的计算,并写出具体仿真步骤。 习题: 计算下面几类信道的信道容量C: 1 无损信道 1/ 2 1/ 20000 003/ 5 3/101/100 000001 Pl o gCr 答案: c=1.585 2 无噪有损信道 8 10 10 01 PlogCs 答案: c=1 3 对称离散信道【例3.6】 1111 3366 1111 6633 P 1 log() s CsH pp 答案: c=0.0817 4 一般信道,其信道矩阵为: 111 244 121 636 113 884 P 求 1)其信道容量C,2)最佳输入分布() i p a 答案: 4. 0
14、.3109,( )(0.1702,0.3955,0.4343)Cp a beta = -1.9732 -1.1610 -0.8927 pb = 0.2053 0.3605 0.4342 pa = 0.1702 0.3955 0.4343 解:一般信道信道容量计算步骤: (1) jij s j ijj s j ij abpabpabp求);|(log)|()|( 11 9 (2) j s j c 1 2log (3))(2)( j c j bpbp j 求 (4))()|()()( 1 i r i ijij apabpapbp求 实验五:连续信源的差熵与波形信道的信道容量 一、实验设备 : 1、
15、计算机 2、软件: Matlab 二、实验目的 : 1 、熟悉连续信源的特点; 2 、学习仿真连续信源的方法 3 、学习连续信源平均信息量的计算方法 4 、熟悉 Matlab 编程; 三、实验内容 : 1 、写出计算连续信源平均信息量的Matlab 程序。 2 、将程序在计算机上仿真实现,验证程序的正确性。 3、完成习题并写出具体实现步骤。 四、实验报告要求 简要总结连续信源的特点及连续信源平均信息量的计算。 知识点: Matlab 符号运算 1、定义符号:syms x 定义表达式里面的变量 2、定义函数:p=1/sqrt(2*pi*u2)*exp(-(x-m)2/(2*u2); 3、积分:i
16、nt(f, x, -inf, inf); 求表达式f 的对符号变量x 的在负无穷到正无穷范围内 定积分 int(f,v,a,b) 求表达式f 的对符号变量v 的在 (a,b)范围内定积分 例题:求 syms x f=(x2+1)/(x2-2*x+2)2; I=int(f) 4、符号运算中的运算符 (1)基本运算符 符号矩阵: “ +”, “ -” ,“ * ”,“” ,“ / ”,“ ” “ ” , )22( 1 22 2 dx xx x I 10 符号数组: “ .* ”,“ ./ ”,“.” ,“ . ”分别实现符号数组的乘、除、求幂,即数组间元素 与元素的运算。 没有 log2 和 lo
17、g10,其余与数值运算相同 (2)关系运算符 运算符 “ =”,“ =”。 5、连续信源的差熵与波形信道的信道容量: R dxxpxpxh)(log)()( )1log( N S Bc 练习: 一、计算下面几类信源的差熵: 1 均匀分布连续信源 1 () ( ) (,) 0 axb p xba xb xa 其中8,4ba syms x, a=4; b=8; p=1/(b-a); f=p*(log (p)/log(2); hx=-int(f,x,a,b); hx=double(hx); hx 2 高斯信源 2 2 2 1() ( )exp() 2 2 xm p x 其中 2 3,4m 3 指数分
18、布信源【习题4.2】 ( )(0;0) x p xex 其中1/ 4 4 拉普拉斯概率分布信源【习题4.2】 11 | | 1 ( )(;0) 2 x p xex 其中1/ 4 解答: 均匀分布信源的差熵为:log()2hba 高斯分布信源的差熵为: 2 1 log(2)3.0471 2 he 指数分布信源的差熵为:log()3.4427 e h 拉普拉斯分布信源的差熵为: 2 log()4.4427 e h 二、波形信道的信道容量 实验目的:掌握香农公式,即信息传输率、带宽、信噪比的关系 log(1) s n P CW P 【习题 4.18】 设在平均功率受限高斯加性波形信道中, 信道带宽为
19、 3kHz, 又设(信 号功率 +噪声功率 )/噪声功率 =10dB。 (即10lg(1)10 s n P dB P ,其中lg是以 10 为底 的对数) 。 1)试计算该信道传送的最大信息率(单位时间); 2)若信噪比降为 5dB,要达到相同的最大信息传输率,信道带宽应是多少? 答案: 1. 最大信息传输率9965.784(/ ) t Rbits 2. 带宽应为:W = 4.8439e+003 实验六:无失真信源编码与保真度准则下的信源编码 一、实验设备 : 1、计算机 2、软件: Matlab 二、实验目的 : 1 、理解无失真信源编码与保真度准则下的信源编码的物理意义; 2 、理解无失真
20、信源编码与保真度准则下的信源编码的区别; 3 、熟悉 Matlab 编程; 三、实验内容 : 1 、学习应用信源编码定理解决实际问题。 2 、将程序在计算机上仿真实现,验证程序的正确性。 3、完成习题并写出具体实现步骤。 四、实验报告要求 12 写出习题实现的具体步骤。 习题: 1、 (习题 5.4 )若有一信源, 12 41 ( ) 55 ss S P s ,每秒钟发出 2.66 个信源符号。 将此信源的输出符号送入某一个二元信道中进行传输(假设信道是无噪无损的) , 而信道每秒钟只传递两个二元符号。 试问信源不通过编码能否直接与信道连接? 若通过适当编码能否在此信道中进行无失真传输?若能连
21、接,试说明如何编码并 说明原因。 2、 (习题7.1 )一个四元对称信源 0,1,2,3 1111 ( ) 4444 U P u , 接收符号为 0,1,2,3V,其失真矩阵为 0111 1011 1101 1110 D,求 maxD和minD。 实验七:有噪信道编码定理 一、实验设备 : 1、计算机 2、软件: Matlab 二、实验目的 : 1 、理解有噪信道编码定理的物理意义; 2 、熟悉 Matlab 编程; 三、实验内容 : 1 、学习应用有噪信道编码定理解决实际问题。 2 、将程序在计算机上仿真实现,验证程序的正确性。 3、完成习题并写出具体实现步骤。 四、实验报告要求 写出习题实
22、现的具体步骤。 习题: 13 1、 (习题6.1 )设有一离散信道,其信道传递矩阵为: 111 236 111 623 111 362 ,并设 123 11 (),()(), 24 p xp xp x试分别按最小错误概率准则与最大似然译码准则确 定译码规则,并计算相应的平均错误概率。 实验八、九:无失真的信源编码(Huffman 、香农- 费诺- 埃利斯 编码编码) 一、实验设备 : 1、计算机 2、软件: Matlab 二、实验目的 : 1、掌握无失真的信源编码的基本原理; 2、熟练掌握 Huffman 以及香农 - 费诺-埃利斯编码的方法步骤; 三、实验内容 : 1、根据 Huffman
23、编码的方法步骤,用 Matlab 编写二元 Huffman 编码的程 序; 2、用习题 1 验证程序的正确性。 3、编写程序实现香农 - 费诺- 埃利斯编码,并完成习题。 四、实验报告要求 1、 分析给出的二元 Huffman 编码的 Matlab 源程序的局限性, 考虑如何改进。 2、写出习题实现具体步骤。 源程序:function h,l=huffman(p) if length(find(p10e-10, error(Not a prob.vector,components do not add up to 1) end n=length(p); 14 q=p; m=zeros(n-1,
24、n); for i=1:n-1 q,l=sort(q); m(i,:)=l(1:n-i+1),zeros(1,i-1); q=q(1)+q(2),q(3:n),1; end for i=1:n-1 c(i,:)=blanks(n*n); end c(n-1,n)=0; c(n-1,2*n)=1; for i=2:n-1 c(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:
25、i-1 c(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); end end for i=1:n h(i,1:n)=c(1,n*(find(m(1,:)=i)-1)+1:find(m(1,:)=i)*n); l1(i)=length(find(abs(h(i,:)=32); end l=sum(p.*l1); 习题: 1、某一离散信源概率分布:p=1/2,1/4,1/8,1/16,1/16 求信源的熵,并对该 信源进行二元哈夫曼编码,得到码字和平均码长以及编码效率。 2、设
26、一离散无记忆信源 8 1 8 1 2 1 4 1 )( 4321 ssss sP S ,对其进行香农 -费诺- 埃利斯编码,并求平均码长及编码效率。 答案: )/(75.2),1111,1101,10,001( 4321 信源符号二元码Lssss 香农- 费诺- 埃利斯编码步骤: 1))( 2 1 )()()( 1 1 k k i ik aPaPaFSF 15 2)1) )( 1 log()( k k aP al 3)所对应的码字作为后的二进制小数的小数点)(取 kkk aalSFW)( % 求码字,编码过程 实验十信道的纠错编码(线性分组码) 一、实验设备 : 1、计算机 2、软件: Mat
27、lab 二、实验目的 : 通过线性分组码的实验,进一步加深对线性分组码编码理论的理解。 三、实验内容 : 1 、对线性分组码编码规则进行验证。 2 、对译码数据输出进行验证。 四、实验报告要求 1、完成例题,并写出具体实现步骤。 2、分析整理实验数据。 例题:已知( 7,3)码的生成矩阵为G=1 0 0 1 1 1 0;0 1 0 0 1 1 1;0 0 1 1 1 0 1,列出 所有许用码组,并求监督矩阵,检验该码的纠错能力。 源程序: % 线性分组码编码器及译码器 % 可实现循环码编译 % Purpose: % Liner encoding and decoding function li
28、nearcoding % Define variables: % G 生成矩阵 % u 编码输出 % input_nk 输入序列 % input_C 纠错输出码序列 % R 信道输出码 % H 校验矩阵 % e 差错图案 % s 伴随式 %信道编码 input_nk=input(enter the symbol:); % input_nk 输入序列(输入信息位) G=input(input G:); % G 生成矩阵 16 c,d=size(G); %求矩阵的行、列数 O=G(:,1:c); Q=inv(O); %生成 o 的逆矩阵 G=Q*G; G=abs(rem(G,2); % abs 函
29、数可以求实数的绝对值 P=G(:,c+1:d); a=d; b=c; if(rem(length(input_nk),b)=0) input_nk=input_nk,zeros(1,b-rem(length(input_nk),b); end n=length(input_nk)/b; u=zeros(1,n); j=1; for i=1:b:n*b for p=1:1:a sum=0; for q=1:1:b sum=input_nk(1,q+i-1)*G(q,p)+sum; end u(j)=rem(sum,2); j=j+1; end end %信道纠错译码 R=input(input
30、R:); % R 信道输出码即接收码字 H=P,eye(a-b) ;F=H; % H 校验矩阵 if(rem(length(R),a)=0) R=R,zeros(1,a-rem(length(R),a); end n=length(R)/a; s=zeros(1,n*(a-b); % s 伴随式 q=1; for i=1:a:n*a for j=1:1:(a-b) sum=0; for k=1:1:a sum=R(1,k+i-1)*F(k,j)+sum; end s(q)=rem(sum,2); q=q+1; end end 17 e=zeros(1,length(R); l=zeros(1,
31、n*(a-b); z=1; for k=1:(a-b):n*(a-b) for i=1:1:a e(1,z)=1; for j=1:1:(a-b) if(F(i,j)=1)l(j)=s(j+k-1); else l(j)=1-s(j+k-1);end; e(1,z)=l(j)*e(1,z); end z=z+1; end end for v=1:1:length(R) input_C(1,v)=rem(R(1,v)+e(1,v),2); end %结果输出 disp(the output code:); disp(u); disp(the corrected code:); disp(input_C); % input_C 纠错输出码序列 习题: 1、若( 7,4)码的生成矩阵为 1000111 0100101 0010011 0001110 G 1)写出(7,4)码的全部码元;(注意考虑如果 G不是典型生成矩阵如何?编程 应体现出如何把生成矩阵典型化) 2)求校验矩阵; 3)判断 B(0101101)是否为许用码字; 4)判断该码的纠检错能力; 5)求该码的对偶码。
链接地址:https://www.31doc.com/p-5206270.html