信息论与编码实验二
- 格式:docx
- 大小:48.43 KB
- 文档页数:5
《信息论与编码》实验2 香农编码规则及其软件实现一、实验目的1、通过上机实践,实现常用的信源编码方案,以加深对编码理论的理解,促进对本课程所学知识的理解和把握。
2、通过信源编译码,理解香农第一定理3、通过信源编译码,掌握信源编码的方法和手段二、实验原理信源编码主要可分为无失真信源编码和限失真信源编码。
无失真信源编码主要适用于离散信源或数字信号,如文本、表格及工程图纸等信源,它们要求进行无失真地数据压缩,要求完全能够无失真地可逆恢复。
凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合都可称为最佳码。
为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。
其中香农编码是能获得最佳码的编码方法之一。
香农第一定理指出,选择每个码字的长度i K 满足下式I(i x )≤i K <I(i x )+1 ,i ∀就可以得到这种码。
这种编码方法称为香农编码。
香农编码步骤:设离散无记忆信源二进制香农码的编码步骤如下:(1)将信源符号按概率从大到小的顺序排列,为方便起见,令p (x 1)≥ p (x 2)≥…≥ p (xn )(2)令p (x 0)=0,用)(j a x P ,j =i +1表示第i 个码字的累加概率,则:n j x P x P j i i j a ,...,2,1,)()(10==∑-=12112,,,,,,()1(),(),,(),,()()n i n ii i n x x x x X p x p x p x p x p x P X =⎧⎫⎡⎤==⎨⎬⎢⎥⎣⎦⎩⎭∑(3)确定满足下列不等式的整数i K ,并令i K 为第i 个码字的长度-log2 p (xn )≤i K <- log2 p (xn )+1(4)将)(j a x P 用二进制表示,并取小数点后i K 位作为符号xi 的编码。
三、实验内容1)充分掌握信源编码方案之一的香农编码算法设计;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个码。
NANCHANG UNIVERSITY信息论与编码实验报告(2018年11月27日)学院:信息工程学院系电子信息工程系专业班级:学生姓名:学号:指导教师:目录实验一自信息量和熵源.............................................................................................. 实验二准对称信道容量.............................................................................................. 实验三费诺不等式...................................................................................................... 实验四香农编码.......................................................................................................... 实验五费诺编码.......................................................................................................... 实验六霍夫曼编码......................................................................................................实验一自信息量和熵源一、实验要求1、画出I=-的函数图;2、画出H(p)=-p-(1-p)函数图。
二、实验原理及理论分析自信息量:一个事件的自信息量就是对其不确定性的度量。
信息论与编码实验报告实验一:计算离散信源的熵一、实验设备: 1、计算机2、软件:Matlab 二、实验目的:1、熟悉离散信源的特点;2、学习仿真离散信源的方法3、学习离散信源平均信息量的计算方法4、熟悉 Matlab 编程; 三、习题:1. 甲地天气预报构成的信源空间为:1111(),,,8482X p x ⎡⎤⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦⎣⎦ 小雨云 大雨晴 乙地信源空间为:17(),88Y p y ⎡⎤⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦⎣⎦小雨晴 求此两个信源的熵。
求各种天气的自信息量。
代码:x=[1/2,1/4,1/8,1/8]; y=[7/8,1/8];HX=sum(-x.*log2(x)) HY=sum(-y.*log2(y)) IX=-log2(x) IY=-log2(y) 答案:() 1.75;()0.5436H X H Y ==2、 某信息源的符号集由A 、B 、C 、D 、E 组成,设每一符号独立出现,其出现的概率分别为,1/4,1/8,1/8,3/16,5/16,试求该信源符号的平均信息量。
代码:x=[1/4,1/8,1/8,3/16,5/16]; HX=sum(-x.*log2(x))答案:H(X) = 2.2272bit/符号3、设有四个消息分别以概率1/4,1/8,1/8,1/2传送,每一消息的出现是相互独立的。
试计算其平均信息量。
代码:x=[1/4,1/8,1/8,1/2]; HX=sum(-x.*log2(x)) 答案:H(X) =1.75bit/符号4. 设一个二元信源(只有0和1两种符号)其概率空间为:(),1X p x p p ⎡⎤⎡⎤=⎢⎥⎢⎥-⎣⎦⎣⎦0 1编程画出H 与p 的关系,并说明当P 呈什么分布时,平均信息量达到最大值。
(说明:H=-p.*log2(p)-(1-p).log2(1-p);) 代码:p= 1/1000000:1/1000:1;H=-p.*log2(p)-(1-p).*log2(1-p); plot(p,H) grid on xlabel('p'); ylabel('HP'); 图:实验二:验证熵的可加性与强可加性1. 【例2.6】有一离散无记忆信源123111(),,244a a a X p x ⎡⎤⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦⎣⎦验证二次扩展信源2X 的熵等于离散信源X 的熵的2倍,即2()2()H X H X =代码:x=[1/2,1/4,1/4];hx=sum(x.*log2(1./x))x2=[1/4,1/16,1/16,1/8,1/8,1/8,1/16,1/8,1/16] hx2=sum(x2.*log2(1./x2)) 答案:2() 1.5;() 3.0H X H X ==2. 验证两个统计独立的信源,X Y ,验证:()()()H XY H X H Y =+其中:123111(),,244a a a X p x ⎡⎤⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦⎣⎦123111(),,333b b b Y p y ⎡⎤⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦⎣⎦代码:x=[1/2,1/4,1/4]; y=[1/3,1/3,1/3];xy=[1/6,1/6,1/6,1/12,1/12,1/12,1/12,1/12,1/12] hx=sum(x.*log2(1./x)) hy=sum(y.*log2(1./y)) Hxy=sum(xy.*log2(1./xy)) 答案:() 1.5,() 1.585() 3.085H X H Y H XY ===3、条件熵的计算与熵的强可加性 验证离散二维平稳信源,满足:12121()()(|)H X X H X H X X =+某一离散二维平稳信源0121141(),,3694X p x ⎡⎤⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦⎣⎦12X X 其联合概率分布12()p X X 为:编程计算:1) 联合熵12()H X X 2) 条件熵21(|)H X X3) 验证:12121()()(|)H X X H X H X X =+代码:x1=[11/36,4/9,1/4]; x2=[11/36,4/9,1/4];b=[1/4,1/18,0;1/18,1/3,1/18;0,1/18,7/36]; 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 end end HXYHx1=sum(x1.*log2(1./x1)) Hx2=sum(x2.*log2(1./x2))b0=b(1,:); b1=b(2,:); b2=b(3,:);x1x2=[b0./x2;b1./x2;b2./x2]; Hx1x2=0;for i=1:size(x1x2,1) for j=1:size(x1x2,2) if x1x2(i,j)>0Hx1x2=Hx1x2-b(i,j).*log2(x1x2(i,j)); end end end Hx1x2 答案:12112121() 1.5426;(|)0.8717() 2.4144()(|) 2.4144H X H X X H X X H X H X X ===+=实验三:离散信道的平均互信息的计算1. 【习题3.1】 设信源12()0.6,0.4X x x p x ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦通过一干扰信道,接收到符号为12[,]Y y y =,其信道矩阵为:516631,44P ⎡⎤⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦1) 求信源X 中事件1x 和2x 分别含有的自信息;2) 收到消息(1,2)j y j =后,获得的关于(1,2)i x i =的信息量;3) 求信源X 和输出变量Y 的信息熵; 4) 信道疑义度(|)H X Y 和噪声熵(|)H Y X ; 5) 接收到消息Y 后获得的平均互信息;代码:x=[0.6,0.4];p=[5/6,1/6;3/4,1/4]; Ix1=log2(1./(x(1,1))) Ix2=log2(1./(x(1,2)))pxy=[x(1,1)*p(1,:);x(1,2)*p(2,:)]; py=[x*p(:,1),x*p(:,2)];px_y=[pxy(:,1)/py(1,1),pxy(:,2)/py(1,2)]; I=log2(p./[py;py]) Hx=sum(x.*log2(1./x)) Hy=sum(py.*log2(1./py))Hx_y=sum(sum(pxy.*log2(1./px_y))) Hy_x=sum(sum(pxy.*log2(1./p)))Ixy=sum(sum(pxy.*log2(p./[py;py])))答案:12111221221.()0.737() 1.32192.(;)0.0589,(;)0.263,(;)0.0931,(;)0.32193.()0.971,()0.72194.(|)0.9635(|)0.71455.(;)0.0074I x I x I x y I x y I x y I x y H X H Y H X Y H Y X I X Y ====-=-======2. 二元信道的互信息与信源分布的关系 有二元信源:01()1X p x ωω⎡⎤⎡⎤=⎢⎥⎢⎥-⎣⎦⎣⎦有二元信道,其传递矩阵为:11p p P p p -⎡⎤=⎢⎥-⎣⎦, 其中0.2p =,即传递矩阵0.80.20.20.8P ⎡⎤=⎢⎥⎣⎦编程实现下面题目:1) 画出平均互信息(;)I X Y 随信源分布ω的关系曲线,并求出最大平均互信息。
新课改下中学体育教学的问题与对策分析摘要:在当前的教育发展中,中学阶段的体育教学是不容忽视的重要内容,同时也是整个教育体系中的重要组成部分。
中学生的身体发展速度较快,在这一过程中对学生的身体素质进行培养是非常重要的。
从当前的中学体育教学情况来看,开展体育教学之后,能够有效的实现学生身体素质的培养和身体技能的提升。
关键词:新课改;中学体育;问题及对策引言:在当前新课改发展的背景下,老师需要正确的看待高中体育教学问题的开展,要结合学校相关领导人针对当前教学中存在的问题进行分析,要建立完善的科学评价体系和评价模式。
正凸显教学改革和发展的真实性与创新性。
一、中学体育教学的重要性国家相关体育教育部门在发展过程中多次强调中学生的身体训练问题,从国家体育教育部门的发展角度来看,开展中学生的体育教学工作之后,能够真正提高整体的教学质量和教学效果,而且能够为学生身体素质的提升起到一定的推动作用。
在当前的新课改发展背景下,老师的教育观念和具体的教学内容是非常重要的,体育老师在开展体育教学的过程中,能够真正遵循以德育人的教学原则了解学生的实际诉求,能够为后续的教育起到一定的推动力[1]。
了解学生素质发展和全面发展的基本内容,从根本上提高整体的教学效果。
开展高质量的体育教学工作之后,能够为学生综合能力的发展提供一定的技术保障。
从当前高中学生的情况来看,部分学生的身体素质相对较差,如果不及时对学生的身体机能进行培养,就会影响学生的身心健康发展。
学校通过开展高质量的体育教学活动之后,能够让学生在参与活动训练的过程中养成良好的习惯,这对学生的整体发展来说是非常有帮助的。
二、中学体育教学过程中存在的问题2.1.中学体育教学工作的重视度不足从当前高中学阶段的体育教学情况来看,部分学校在办学期间更加关注学生的应试发展,只关心学生的学科成绩,忽视了学生身体素质和体育课堂工作的开展。
但是由于部分学校对于体育教学缺乏一定的重视度,导致很多地区的体育教学工作开展非常困难。
实验一关于硬币称重问题的探讨一、问题描述:假设有N 个硬币,这N 个硬币中或许存在一个特殊的硬币,这个硬币或轻或重,而且在外观上和其他的硬币没什么区别。
现在有一个标准天平,但是无刻度。
现在要找出这个硬币,并且知道它到底是比真的硬币重还是轻,或者所有硬币都是真的。
请问:1)至少要称多少次才能达到目的;2)如果N=12,是否能在3 次之将特殊的硬币找到;如果可以,要怎么称?二、问题分析:对于这个命题,有几处需要注意的地方:1)特殊的硬币可能存在,但也可能不存在,即使存在,其或轻或重未知;2)在目的上,不光要找到这只硬币,还要确定它是重还是轻;3)天平没有刻度,不能记录每次的读数,只能判断是左边重还是右边重,亦或者是两边平衡;4)最多只能称3 次。
三、解决方案:1.关于可行性的分析在这里,我们把称量的过程看成一种信息的获取过程。
对于N 个硬币,他们可能的情况为2N+1 种,即重(N 种),轻(N 种)或者无假币(1 种)。
由于这2N+1 种情况是等概率的,这个事件的不确定度为:Y=Log(2N+1)对于称量的过程,其实也是信息的获取过程,一是不确定度逐步消除的过程。
每一次称量只有3 种情况:左边重,右边重,平衡。
这3 种情况也是等概率的,所以他所提供的信息量为:y=Log3在K 次测量中,要将事件的不确定度完全消除,所以K= Log(2N+1)/ Log3根据上式,当N=12 时,K= 2.92< 3 所以13 只硬币是可以在3 次称量中达到目的的。
通过此式,我们还可以计算得到:通过3 次测量而找出异常硬币,N 的最大值为13.2.方案的提出为了描述方便,我们给这12枚硬币分别编号(1)-(12)。
首先,任选8个比较,如选:⑴⑵⑶⑷比⑸⑹⑺⑻1.若一样重,则假币在⑼~⑿中,第二步:⑼⑽比⑾⑴(1)若一样重,则可能的假币为⑿。
则第三步:⑴比⑿a.若一样重,则没有假币;b.不一样重,则假币为⑿:如果(1)>(12),则假币轻,反之,假币重;(2)若⑼⑽重,则第三步:⑼比⑽a.若一样重,则假币为⑾(较轻)b.不一样重,则假币为⑼、⑽中较重者(3)若⑼⑽轻,则第三步:⑼比⑽a.若一样重,则假币为⑾(较重)b.不一样重,则假币为⑼、⑽中较轻者2.若⑴⑵⑶⑷重,则第二步:⑴⑵⑸比⑶⑷⑹(1)若一样重,则假币在⑺⑻中,第三步:⑺比⑻假币为⑺、⑻中较轻者(2)若⑴⑵⑸端较重,则假币在⑴⑵⑹中,第三步:⑴比⑵a.若一样重,则假币为⑹(较轻)b.不一样重,则假币为⑴⑵中较重者(3)若⑶⑷⑹端较重,则假币在⑶⑷⑸中,第三步:⑶比⑷a.若一样重,则假币为⑸(较轻)b.不一样重,则假币为⑶、⑷中较重者3.若⑴⑵⑶⑷轻,则与上面类似,第二步:⑴⑵⑸比⑶⑷⑹(1)若一样重,则假币在⑺⑻中,第三步:⑺比⑻假币为⑺、⑻中较重者(2)若⑴⑵⑸端较轻,则假币在⑴⑵⑹中,第三步:⑴比⑵a.若一样重,则假币为⑹(较重)b.不一样重,则假币为⑴⑵中较轻者(3)若⑶⑷⑹端较轻,则假币在⑶⑷⑸中,第三步:⑶比⑷a.若一样重,则假币为⑸(较重)b.不一样重,则假币为⑶、⑷中较轻者3.用C语言编程实现上述方案为:#include <stdio.h>void main(){int i;float a[12];for(i=0;i<12;i++)scanf("%f",&a[i]);if(a[0]+a[1]+a[2]+a[3]==a[4]+a[5]+a[6]+a[7]){if(a[0]+a[1]+a[2]==a[8]+a[9]+a[10]){if(a[8]==a[11])printf("There is no special coin!\n");else if(a[8]>a[11])printf("There is a special coin:%f(12) and it's lighter than others.\n",a[11]);elseprintf("There is a special coin:%f(12) and it's heavier than others.\n",a[11]);}else if(a[0]+a[1]+a[2]>a[8]+a[9]+a[10]){if(a[8]==a[9])printf("There is a special coin:%f(11) and it's lighter than others.\n",a[10]);else if(a[8]>a[9])printf("There is a special coin:%f(10) and it's lighter than others.\n",a[9]);elseprintf("There is a special coin:%f(9) and it's lighter than others.\n",a[8]);}else{if(a[8]==a[9])printf("There is a special coin:%f(11) and it's heavier than others.\n",a[10]);else if(a[8]>a[9])printf("There is a special coin:%f(9) and it's heavier than others.\n",a[8]);elseprintf("There is a special coin:%f(10) and it's heavier than others.\n",a[9]);}}else if(a[0]+a[1]+a[2]+a[3]>a[4]+a[5]+a[6]+a[7]){if(a[0]+a[2]+a[5]==a[1]+a[4]+a[8]){if(a[6]==a[7])printf("There is a special coin:%f(4) and it's heavier than others.\n",a[3]);else if(a[6]>a[7])printf("There is a special coin:%f(8) and it's lighter than others.\n",a[7]);elseprintf("There is a special coin:%f(7) and it's lighter than others.\n",a[6]);}else if(a[0]+a[2]+a[5]>a[1]+a[4]+a[8]){if(a[0]==a[2])printf("There is a special coin:%f(5) and it's lighter than others.\n",a[4]);else if(a[0]>a[2])printf("There is a special coin:%f(1) and it's heavier thanothers.\n",a[0]);elseprintf("There is a special coin:%f(3) and it's heavier than others.\n",a[2]);}else{if(a[1]>a[8])printf("There is a special coin:%f(2) and it's heavier than others.\n",a[1]);if(a[5]<a[8])printf("There is a special coin:%f(6) and it's lighter than others.\n",a[5]);}}else{if(a[0]+a[2]+a[5]==a[1]+a[4]+a[8]){if(a[6]==a[7])printf("There is a special coin:%f(4) and it's lighter than others.\n",a[3]);else if(a[6]>a[7])printf("There is a special coin:%f(7) and it's heavier than others.\n",a[6]);elseprintf("There is a special coin:%f(8) and it's heavier than others .\n",a[7]);}else if(a[0]+a[2]+a[5]<a[1]+a[4]+a[8]){if(a[0]==a[2])printf("There is a special coin:%f(5) and it's heavier than others.\n",a[4]);else if(a[0]>a[2])printf("There is a special coin:%f(3) and it's lighter than others.\n",a[2]);elseprintf("There is a special coin:%f(1) and it's lighter than others.\n",a[0]);}else{if(a[1]<a[8])printf("There is a special coin:%f(2) and it's lighter than others.\n",a[1]);if(a[5]>a[8])printf("There is a special coin:%f(6) and it's heavier than others.\n",a[5]);}}}运行结果如图:即输入12个数表示这12枚硬币的重量,最后输出哪一枚为假币,并判断其轻重。
福建农林大学计算机与信息学院信息工程类信息论与编码课程实验报告实验项目列表实验名称1:信源建模一、实验目的和要求(1)进一步熟悉信源建模;(2)掌握MATLAB程序设计和调试过程中数值的进制转换、数值与字符串之间的转换等技术。
二、实验内容(1)假设在一个通信过程中主要传递的对象以数字文本的方式呈现。
(2)我们用统计的方式,发现这八个消息分别是由N1,N2,…,N8个符号组成的。
在这些消息是中出现了以下符号(符号1,符号2,…,符号M)每个符号总共现了(次数1,次数2,…,次数M)我们认为,传递对象的信源模型可表示为:X为随机变量(即每次一个字符);取值空间为:(符号1,符号2,…,符号M);其概率分布列为:(次数1/(N1+…+N8),…,次数M/( N1+…+N8))三、实验环境硬件:计算机软件:MATLAB四、实验原理图像和语声是最常用的两类主要信源。
要充分描述一幅活动的立体彩色图像,须用一个四元的随机矢量场X(x,y,z,t),其中x,y,z为空间坐标;t 为时间坐标;而X是六维矢量,即表示左、右眼的亮度、色度和饱和度。
然而通常的黑白电视信号是对平面图像经过线性扫描而形成。
这样,上述四元随机矢量场可简化为一个随机过程X(t)。
图像信源的最主要客观统计特性是信源的幅度概率分布、自相关函数或功率谱。
关于图像信源的幅度概率分布,虽然人们已经作了大量的统计和分析,但尚未得出比较一致的结论。
至于图像的自相关函数,实验证明它大体上遵从负指数型分布。
其指数的衰减速度完全取决于图像类型与图像的细节结构。
实际上,由于信源的信号处理往往是在频域上进行,这时可以通过傅里叶变换将信源的自相关函数转换为功率谱密度。
功率谱密度也可以直接测试。
语声信号一般也可以用一个随机过程X(t)来表示。
语声信源的统计特性主要有语声的幅度概率分布、自相关函数、语声平均功率谱以及语声共振峰频率分布等。
实验结果表明语声的幅度概率分布可用伽玛(γ)分布或拉普拉斯分布来近似。
实验二 离散信道及其容量一、实验目的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、离散对称信道:当离散准对称信道划分的子集只有一个时,信道关于输入和输出对称。
没实验一 绘制二进熵函数曲线(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.理解信源编码的意义; 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以上四、 实验内容和步骤1. 对如下信源进行香农编码,并计算编码效率。
12345670.200.190.180.170.150.100.01X a a a a a a a P ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦2. 把上述信源符号的概率空间重组为信源符号为两个符号序列的概率空间,然后进行香农编码,并计算编码效率。
11()i i k k P p a -==∑五、实验结论与心得1.对单符号信源进行香农编码,并计算编码效率。
先创建一个可以把0 ~ 1 之间(包含0不包含1)的十进制小数转化为对应二进制的函数,即FRACtoBIN函数。
该函数程序如下:function bin = FRACtoBIN( frac )% FRACtoBin函数可以把0-1之间的小数转化为20位二进制数,并存储在数组中以返回使用bin = size(1,20);for i=1:20temp = frac * 2;bin(i) = floor(temp);frac = temp - floor(temp);endend再创建一个名为ShanCoding的函数,该函数的输入为信源符号的概率空间,返回值包括对应的香农编码和平均码长。
实验二Shannon编码一、实验目的及要求a)实验目的1.通过本实验实现信源编码——Shannon编码2.编写M文件实现,掌握Shannon编码方法b)实验要求1.了解Matlab中M文件的编辑、调试过程2.编写程序实现Shannon编码算法二、实验步骤及运行结果记录a)实验步骤1.输入Shannon编码程序2.运行程序,按照提示输入相应信息,并记录输入信息,及运行结果。
3.思考:在程序中加入排序子程序,使其在输入信源概率时,不要求输入顺序。
b)实验结果y =0.2000 0 2.3219 3.00000.1900 0.2000 2.3959 3.00000.1800 0.3900 2.4739 3.00000.1700 0.5700 2.5564 3.00000.1500 0.7400 2.7370 3.00000.1000 0.8900 3.3219 4.00000.0100 0.9900 6.6439 7.0000code =000;code = 001;code = 011;code =100;code = 101;code =1110;code =1111110三、实验流程图(附一)四、程序清单,并注释每条语句(附二)五、实验小结香农编码是码符号概率大的用短码表示,概率小的是用长码表示,程序中对概率排序,最后求得的码字就依次与排序后的符号概率对应。
此程序缺点是,第一个码字都是以0开始,因为对累加概率求二进制后,小数点后的数都是0,取几位由码长确定,而香农编码是不唯一的,如果手动编码就不存在这样的问题。
后面求得的编码没有下标就需要注意是与上面排序后的信源符号对应。
附一附二N=input('请输入信源符号个数:')%输入信源符号个数p=zeros(1,N);%生成1*4的零矩阵for i=1:Np(1,i)=input('请输入各信源符号出现的概率:')%输入各个信源符号的概率endp=fliplr(sort(p));%将概率从大到小进行排序if abs(sum(p)-1)>10e-10error('输入概率不符合概率分布')%检验所输入的概率是否正确endy=zeros(N,4);%生成N*4零矩阵for i=1:Ny(i,1)=p(1,i);%将各个符号出现的概率放入y矩阵的第一列中y(1,2)=0;if i>1y(i,2)=y(i-1,2)+y(i-1,1); %第二列其余的元素用此式求得,即为累加概率endy(i,3)=log2(1./p(i))%求各个信源符号的信息熵放入y矩阵的第三列中y(i,4)=ceil(y(i,3))%求码长endA=y(:,2);%取出y中的第二列元素B=y(:,4);%取出y中的第四列元素for i=1:Ncode=shannoncode(A(i),B(i))%生成码字endfunction [C]=shannoncode(A,B)%对累加概率求二进制的函数C=zeros(1,B);%生成零矩阵用于存储生成的二进制数,对二进制的每一位进行操作temp=A;%temp赋初值for i=1:B%累加概率转化为二进制,循环求二进制的每一位,A控制生成二进制的位数 temp=temp*2;if temp>1temp=temp-1;C(1,i)=1;elseC(1,i)=0;endendend。
《信息论与编码技术》实验教案一、实验目的1. 理解信息论基本概念,如信息量、信道容量等。
2. 掌握编码技术的基本原理,如Hamming 编码、卷积编码等。
3. 学会使用仿真工具进行信息论与编码技术的实验。
二、实验原理1. 信息论基本概念:信息量、信道容量、误码率等。
2. 编码技术原理:Hamming 编码、卷积编码、解码算法等。
3. 仿真工具的使用:调用相关函数,设置参数,观察实验结果。
三、实验内容1. 实验一:信息量计算与信道容量分析利用仿真工具随机比特序列,计算信息量。
改变信道参数,分析信道容量变化。
2. 实验二:Hamming 编码与解码编写Hamming 编码器和解码器,进行编码和解码操作。
分析误码率与编码位数的关系。
3. 实验三:卷积编码与解码编写卷积编码器和解码器,进行编码和解码操作。
分析误码率与卷积编码器参数的关系。
4. 实验四:不同编码方案性能比较分别使用Hamming 编码和卷积编码对相同长度比特序列进行编码。
比较两种编码方案的误码率和信息传输效率。
5. 实验五:信息论与编码技术在实际应用中的案例分析分析数字通信系统中信息论与编码技术的应用。
了解信息论与编码技术在无线通信、图像传输等领域的应用。
四、实验步骤1. 实验一:信息量计算与信道容量分析随机比特序列,计算信息量。
设置信道参数,观察信道容量变化。
2. 实验二:Hamming 编码与解码编写Hamming 编码器和解码器,进行编码和解码操作。
改变编码位数,分析误码率变化。
3. 实验三:卷积编码与解码编写卷积编码器和解码器,进行编码和解码操作。
改变卷积编码器参数,分析误码率变化。
4. 实验四:不同编码方案性能比较使用Hamming 编码和卷积编码对相同长度比特序列进行编码。
比较两种编码方案的误码率和信息传输效率。
5. 实验五:信息论与编码技术在实际应用中的案例分析分析数字通信系统中信息论与编码技术的应用案例。
了解信息论与编码技术在无线通信、图像传输等领域的应用。
实验一 绘制二进熵函数曲线(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 i i i λλλλ-+≥-+≤=--+-=-=≤≤⎩⎨⎧⎭⎬⎫-===⎥⎦⎤⎢⎣⎡∑单位为 比特/符号 或 比特/符号序列。
当某一符号xi 的概率p(xi)为零时,p(xi)log p(xi) 在熵公式中无意义,为此规定这时的 p(xi)log p(xi) 也为零。
当信源X 中只含有一个符号x 时,必有p(x)=1,此时信源熵H (X )为零。
四、实验内容:用Excel 和Matlab 软件制作二进熵函数曲线。
根据曲线说明信源熵的物理意义。
(一) Excel具体步骤如下: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)的计算。
信息论与编码上机报告
完成时间:200 年月日
实验要求
1. 二进制对称信道容量:
利用BPSK 信号在一个加性白高斯噪声信道上传输二进制数据,并在用最佳匹配滤波器检测的输出端利用硬判决解码。
1) 画出该信道的差错概率作为函数,γ作为自变量的图。
γ=ε/N 0
ε—在每个BPSK 信号中的能量
N 0/2—噪声功率谱密度
用最佳检测的BPSK 的差错率是:()
γ2Q p =
2) 画出作为γ函数的信道容量的图。
()
γ21)(1Q H p H C b b -=-=
2. 信道容量与带宽和SNR 的关系
1) 输入功率受限为P 和带宽为W 的带限AWGN 信道的容量由下式给出
⎪⎪⎭⎫ ⎝⎛+=W N P W C 021log 画出容量作为W 和P /N 0的函数关系。
2) 画出离散时间AWGN 信道容量作为输入功率和噪声方差的函数关系
⎪⎭⎫ ⎝⎛+=221log 21σP C。
实验二 离散信道及其容量
一、实验目的
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),信源概率空间和信道矩阵分别为
X
P 0 1 0.6 0.4
= X
Px 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.1
P=
实验结果:
2、离散对称信道:当离散准对称信道划分的子集只有一个时,信道关于输入和输出对称。
离散准对称信道:若一个离散无记忆信道的信道矩阵中,按照信道的输出集Y可以将信道划分成n个子集,每个子矩阵中的每一行都是其他行同一组元素的不同排列。
实验代码:
clc;clear;
P=input('输入信道转移概率矩阵:');
[r,c]=size(P);
if sum(P,2)-1~=zeros(1,r)';
error('输入的信道矩阵不合法!');%矩阵行和一定要为1
end
l=1;
Sum=0;
for j=2:c
for i=1:r%i是行变量
for k=1:r
if P(k,j)==P(i,1)
Sum=Sum+1;
break;
end
end
end
end%判断是否离散输出对称信道
if Sum==r*(c-1)
fprintf('是离散输出对称信道!\n',j);
else fprintf('不是对称信道!');
end
实验结果:
ans =
0.0100 0.9900
0.9900 0.0100
是离散输出对称信道!
ans =
0.4000 0.6000
0.3000 0.7000
不是对称信道!
3、二次扩展信道的互信息量I(X;Y)=H(Y)-H(Y|X). 实验代码:
clc,clear;
p=0.01;
P_X1=[0.6,0.4];
p1=1-p;
X2=[0,0;0,1;1,0;1,1];%二次扩展输入符号阵
Y2=X2;%二次扩展输出符号
P_X2=[P_X1(1)^2,P_X1(1)*P_X1(2),P_X1(2)*P_X1(1),P_X1(2)^2];
%求二次扩展后信道矩阵N
N=zeros(4);
for i=1:4
for j=1:4
l=length(find(xor(X2(i,:),Y2(j,:))==0));%比较得正确传递元素个数N(i,j)=p1^l*p^(2-l);
end
end
%下面求I
P_Y2=P_X2*N;
P_XY2=[P_X2(1)*N(1,:);P_X2(2)*N(2,:);P_X2(3)*N(3,:);P_X2(4)*N(4,:)];%联合分布
H_Y2=sum(-P_Y2.*log2(P_Y2));
H_Y_X2=sum(sum(-P_XY2.*log2(N)));
I_XY2=H_Y2-H_Y_X2;
fprintf('2次扩展信道的平均互信息为:%5.3f',I_XY2);
实验结果:
2次扩展信道的平均互信息为:1.783
2)实验中出现的问题及解决方法;
1、信道容量与互信息量有关,而互信息量又与信源熵相关,所以要求得信道容量就必须知道信道传递概率,然后根据公式一步一步计算。
2、对于判断离散对称信道,不需要弄清楚的是它的概念,根据定义来判断。
3、对于扩展信道,分有记忆的和无记忆的,在不确定的情况下计算扩展信源的熵,我们要根据定义来计算。
五、实验心得
通过本次实验,我对于信道的分类,各种信道的特点有了一定的认识和了解。
实验中涉及的主要是二元对称信道,而它的最佳分布是输入和输出均对称。
实验中最主要的部分还是关于信道容量的计算,此次实验,让我们验证了课本上的定理,也让我们更好地理解和掌握了课堂上所学的知识。