《信息论实验指导书(共17页).doc》由会员分享,可在线阅读,更多相关《信息论实验指导书(共17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上信息论与编码实验指导书任课教师:刘亚荣 桂林理工大学电计系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、画图命令plot(x,y); x(向量)是
2、一系列坐标, 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 输出形参表=函数名(输入形参表)注释说明部分函数体语句说明:(1)关于函数文件名: 函数文件名与函数名也可以不相同。当两者不同时,MATLAB将忽略函数名而
3、确认函数文件名,因此调用时使用函数文件名。(2)关于注释说明部分。 注释说明包括三部分内容:紧随函数文件引导行之后以%开头的第一注释行。第一注释行及之后连续的注释行。与在线帮助文本相隔一空行的注释行。 (3)关于return语句。 执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。通常,在函数文件中也可不使用return语句,这时在被调函数执行完成后自动返回。8显示图形1、%plot函数绘制结果t= 0:pi/100:2*pi; %定义数据点y = sin(t);plot(t,y) %显示图形grid on %显示网格xlabel(t); %显示x轴的变量ylabel(sin(t);
4、 %显示y轴的变量2、%plot函数中x-y副的使用t = 0:pi/100:2*pi;y = sin(t);plot(t,y)grid ony2 = sin(t-0.25);y3 = sin(t-0.5);plot(t,y,t,y2,t,y3)实验一:计算离散信源的熵一、实验设备:1、计算机2、软件:Matlab二、实验目的: 1、熟悉离散信源的特点; 2、学习仿真离散信源的方法 3、学习离散信源平均信息量的计算方法 4、熟悉 Matlab 编程;三、实验内容: 1、写出计算自信息量的Matlab 程序 2、写出计算离散信源平均信息量的Matlab 程序。 3、掌握二元离散信源的最大信息量与
5、概率的关系。 4、将程序在计算机上仿真实现,验证程序的正确性并完成习题。四、实验报告要求简要总结离散信源的特点及离散信源平均信息量的计算,写出习题的MATLAB实现语句。信息论基础:自信息的计算公式 Matlab实现:I=log2(1/p) 或I=-log2(p)熵(平均自信息)的计算公式 Matlab实现:HX=sum(-x.*log2(x);或者h=h-x(i)*log2(x(i);习题:1. 甲地天气预报构成的信源空间为:乙地信源空间为:求此两个信源的熵。求各种天气的自信息量。案:2、 某信息源的符号集由A、B、C、D、E组成,设每一符号独立出现,其出现的概率分别为,1/4,1/8,1/
6、8,3/16,5/16,试求该信源符号的平均信息量。(答案:H(X) = 2.2272bit/符号)3、设有四个消息分别以概率1/4,1/8,1/8,1/2传送,每一消息的出现是相互独立的。试计算其平均信息量。(答案:H(X) =1.75bit/符号)4. 设一个二元信源(只有0和1两种符号)其概率空间为:编程画出H与p的关系,并说明当P呈什么分布时,平均信息量达到最大值。(说明:H=-p.*log2(p)-(1-p).log2(1-p);)实验二:验证熵的可加性与强可加性1. 【例2.6】有一离散无记忆信源验证二次扩展信源的熵等于离散信源的熵的2倍,即答案:2. 验证两个统计独立的信源,验证
7、:其中: 3、条件熵的计算与熵的强可加性验证离散二维平稳信源,满足:某一离散二维平稳信源其联合概率分布为:XjX2012012编程计算:1) 联合熵2) 条件熵 3) 验证:答案: %联合熵的计算HXY=0;for i=1:size(b,1)for j=1:size(b,2)if b(i,j)0HXY=HXY-b(i,j).*log2(b(i,j); end endendHXY实验三:离散信道的平均互信息的计算1. 【习题3.1】设信源通过一干扰信道,接收到符号为,其信道矩阵为:1) 求信源X中事件和分别含有的自信息;2) 收到消息后,获得的关于的信息量;3) 求信源X和输出变量Y的信息熵;4
8、) 信道疑义度和噪声熵;5) 接收到消息Y后获得的平均互信息;答案:2. 二元信道的互信息与信源分布的关系有二元信源:有二元信道,其传递矩阵为:, 其中,即传递矩阵 编程实现下面题目:1) 画出平均互信息随信源分布的关系曲线,并求出最大平均互信息。验证:信道容量C(最大平均互信息)满足:2)验证:信道容量C(最大平均互信息)满足:实验四:离散信道及其信道容量一、实验设备:1、计算机2、软件:Matlab二、实验目的: 1、了解信道传输概率的状态图和信道转移概率矩阵特点; 2、了解什么是信道容量和最佳输入概率分布; 3、列出计算信道容量和平均互信息的计算步骤; 4、熟悉 Matlab 编程;三、
9、实验内容: 1、写出几种特殊离散信道的信道容量计算的 Matlab 程序。 2、将程序在计算机上仿真实现,验证程序的正确性。 3、完成习题四、实验报告要求 简要总结离散信道的特点及信道容量的计算,并写出具体仿真步骤。习题:计算下面几类信道的信道容量C:1 无损信道 答案:c=1.5852 无噪有损信道 答案:c=13 对称离散信道【例3.6】 答案:c=0.08174 一般信道,其信道矩阵为:求1)其信道容量,2)最佳输入分布答案:4. beta = -1.9732 -1.1610 -0.8927pb = 0.2053 0.3605 0.4342pa = 0.1702 0.3955 0.434
10、3解:一般信道信道容量计算步骤:(1)(2)(3)(4)实验五:连续信源的差熵与波形信道的信道容量一、实验设备:1、计算机2、软件:Matlab二、实验目的: 1、熟悉连续信源的特点; 2、学习仿真连续信源的方法 3、学习连续信源平均信息量的计算方法 4、熟悉 Matlab 编程;三、实验内容: 1、写出计算连续信源平均信息量的Matlab 程序。 2、将程序在计算机上仿真实现,验证程序的正确性。3、完成习题并写出具体实现步骤。四、实验报告要求简要总结连续信源的特点及连续信源平均信息量的计算。知识点:Matlab符号运算1、定义符号: syms x 定义表达式里面的变量2、定义函数:p=1/s
11、qrt(2*pi*u2)*exp(-(x-m)2/(2*u2);3、积分: int(f, x, -inf, inf); 求表达式f的对符号变量x的在负无穷到正无穷范围内定积分int(f,v,a,b) 求表达式f的对符号变量v的在(a,b)范围内定积分例题:求syms xf=(x2+1)/(x2-2*x+2)2;I=int(f)4、符号运算中的运算符(1)基本运算符u 符号矩阵:“+”,“-”,“*”,“”,“/”,“” “ ”u 符号数组:“.*”,“./”,“.”,“.”分别实现符号数组的乘、除、求幂,即数组间元素与元素的运算。u 没有log2和log10,其余与数值运算相同(2)关系运算符
12、u 运算符“=”,“=”。5、连续信源的差熵与波形信道的信道容量:练习:一、计算下面几类信源的差熵:1 均匀分布连续信源其中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高斯信源 其中3指数分布信源【习题4.2】其中4拉普拉斯概率分布信源【习题4.2】其中解答: 均匀分布信源的差熵为:高斯分布信源的差熵为:指数分布信源的差熵为:拉普拉斯分布信源的差熵为:二、波形信道的信道容量实验目的:掌握香农公式,即信息传输率、带宽、信噪比的关系【习题 4.18】设在平均功率受限高斯加性波形信道
13、中,信道带宽为3kHz, 又设(信号功率+噪声功率)/噪声功率=10dB。(即,其中是以10为底的对数)。1) 试计算该信道传送的最大信息率(单位时间);2) 若信噪比降为5dB,要达到相同的最大信息传输率,信道带宽应是多少?答案:1. 最大信息传输率2. 带宽应为: W = 4.8439e+003 实验六:无失真信源编码与保真度准则下的信源编码一、实验设备:1、计算机2、软件:Matlab二、实验目的: 1、理解无失真信源编码与保真度准则下的信源编码的物理意义; 2、理解无失真信源编码与保真度准则下的信源编码的区别; 3、熟悉 Matlab 编程;三、实验内容: 1、学习应用信源编码定理解决
14、实际问题。 2、将程序在计算机上仿真实现,验证程序的正确性。3、完成习题并写出具体实现步骤。四、实验报告要求写出习题实现的具体步骤。习题:1、(习题5.4)若有一信源,每秒钟发出2.66个信源符号。将此信源的输出符号送入某一个二元信道中进行传输(假设信道是无噪无损的),而信道每秒钟只传递两个二元符号。试问信源不通过编码能否直接与信道连接?若通过适当编码能否在此信道中进行无失真传输?若能连接,试说明如何编码并说明原因。2、(习题7.1)一个四元对称信源,接收符号为,其失真矩阵为,求和。 实验七:有噪信道编码定理一、实验设备:1、计算机2、软件:Matlab二、实验目的: 1、理解有噪信道编码定理
15、的物理意义; 2、熟悉 Matlab 编程;三、实验内容: 1、学习应用有噪信道编码定理解决实际问题。 2、将程序在计算机上仿真实现,验证程序的正确性。3、完成习题并写出具体实现步骤。四、实验报告要求写出习题实现的具体步骤。习题:1、(习题6.1)设有一离散信道,其信道传递矩阵为:,并设试分别按最小错误概率准则与最大似然译码准则确定译码规则,并计算相应的平均错误概率。实验八、九:无失真的信源编码(Huffman 、香农-费诺-埃利斯编码编码)一、实验设备:1、计算机2、软件:Matlab二、实验目的:1、掌握无失真的信源编码的基本原理;2、熟练掌握Huffman以及香农-费诺-埃利斯编码的方法
16、步骤;三、实验内容:1、根据 Huffman 编码的方法步骤,用 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)endn=length(p); q=p; m=zeros
17、(n-1,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
18、 j=1: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
19、、设一离散无记忆信源,对其进行香农-费诺-埃利斯编码,并求平均码长及编码效率。答案: 香农-费诺-埃利斯编码步骤:1)2)3)%求码字,编码过程实验十 信道的纠错编码(线性分组码)一、实验设备:1、计算机2、软件:Matlab二、实验目的: 通过线性分组码的实验,进一步加深对线性分组码编码理论的理解。三、实验内容: 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,列出所有许用码组,
20、并求监督矩阵,检验该码的纠错能力。源程序:% 线性分组码编码器及译码器 % 可实现循环码编译 % Purpose: % Liner encoding and decoding function linearcoding % Define variables: % G 生成矩阵 % u 编码输出 % input_nk 输入序列 % input_C 纠错输出码序列 % R 信道输出码 % H 校验矩阵 % e 差错图案 % s 伴随式 %信道编码 input_nk=input(enter the symbol:); % input_nk 输入序列(输入信息位) G=input(input G:);
21、 % G 生成矩阵 c,d=size(G); %求矩阵的行、列数O=G(:,1:c); Q=inv(O); %生成o的逆矩阵G=Q*G; G=abs(rem(G,2); % abs函数可以求实数的绝对值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 su
22、m=input_nk(1,q+i-1)*G(q,p)+sum; end u(j)=rem(sum,2); j=j+1; end end %信道纠错译码 R=input(input 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(
23、1,k+i-1)*F(k,j)+sum; end s(q)=rem(sum,2); q=q+1; end end e=zeros(1,length(R); l=zeros(1,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)码的生成矩阵为1)写出(7,4)码的全部码元;(注意考虑如果G不是典型生成矩阵如何?编程应体现出如何把生成矩阵典型化)2)求校验矩阵;3)判断B()是否为许用码字;4)判断该码的纠检错能力;5)求该码的对偶码。专心-专注-专业
限制150内