




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息论与编码实验指导书1 课程实验目的本课程是一门实践性很强的专业课和核心课程,根据课程理论教学的需要安排了6学时的配套实验教学,主要内容涉及信息度量的计算方法、典型信源编码方法、典型信道容量计算方法和数据压缩方法四个实验,这四个实验的开设一方面有助于学生消化、巩固课程理论教学的知识,另一方面又可培养学生实践动手能力,同时为后续课程做好准备。2 课程实验要求2.1 课程实验准备要求(1)课程实验主要为设计性实验,要求学生熟悉掌握在VC环境下编写和调试C+取序的方法。(2)要求学生在实验前复习实验所用到的预备知识。可以查阅教材或者相关的参考资料,这需要学生有自主的学习意识和整理知识的能力。(3)
2、根据实验项目,设计相关的数据结构和算法,再转换为对应的书面程序,并进行静态检查,尽量减少语法错误和逻辑错误。上机前的充分准备能高效利用机时,在有限的时间内完成更多的实验内容。2.2 课程实验过程要求(1)生成源代码。将课前编写好的书面代码,利用VC自带的编辑器尽快输入为转换为源代码;(2)程序调试和软件测试。要求学生熟练掌握调试工具,调试正确后,认真整理源程序和注释,给出带有完整注释且格式良好的源程序清单和结果。(3)完成实验报告。根据实验内容和完成情况,按照附件1给定的格式完成课程实验报告的编写。2.3 课程实验报告要求在每次课程实验后要及时进行总结和整理,并编写课程实验报告。报告格式按江西
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 实验内容(1)利用rand
4、om函数和归一化方法构造一个二维离散随机变量(X,Y);(2)分别计算X与Y的嫡、联合嫡、条件嫡:H(X)、H(Y)、H(X,Y)H(X|Y)、I(X|Y);2 数据结构与算法描述(1)函数的定义:函数的数据成员1 .随机生成函数的代码:intk,n,t=0;doublea44,b=0,c=0;for(k=0;k4;k+)for(n=0;n4;n+)akn=rand()%100;t+=akn;)endl;)cout从到问随机取得行列的random数:for(k=0;k4;k+)(for(n=0;n4;n+)(coutsetw(5)akn;)coutendl;)2 .函数归一化代码:cout函数
5、归一化:endl;for(k=0;k4;k+)(for(n=0;n4;n+)(coutsetw(12)akn/t;)coutendl;)3 .H(Y)、H(X)计算代码:coutH(Y)计算:setw(20)H(X)计算:endl;inte=1;for(k=0;k4;k+)(doublei=0,g=0;for (n=0;n4;n+)i+=(akn/t);g+=(ank/t);)gend1;coutP(Yk+1):isetw(8)P(Xe):+e;b-=(i*log(i)/10g(2.0);c-=(g*10g(g)/10g(2.0);)coutH(Y)=-12P(Y)10gp(Y)=bendl;
6、coutH(X)=-Ep(X)logp(X)=cendl;4 .联合嫡H(X,Y)计算代码:cout联合嫡H(X,Y)计算:endl;b=0;intr,u,h=0;for(k=0;k4;k+)for(n=0;n4;n+)if(akn!=0)b-=(akn/t)*log(akn/t)/log(2.0);elser=k,u=n;h=1;break;if(h=0)coutH(X,Y)=-EEp(X,Y)logp(X,Y)=bendl;elsecoutP(r+1,vvu+1vd)为零,中断,无值vvendl;5 .条件嫡H(X|Y)计算代码:coutvv”条件嫡H(X|Y)计算:endl;b=O,h=
7、O;for(k=0;k4;k+)(doublei=0;for(n=0;n4;n+)(i+=(akn/t);)for (n=0;n4;n+)if(akn!=O)b-=(akn/t)*log(akn/t)/i)/log(2.0);)elseh=1;break;)if(h=0)cout”H(X|Y尸-EEP(X,Y)log(P(X,Y)/P(Y)=bendl;elsecoutP(r+1,vvu+1vd)为零,中断,无值vvendl;coutl(X|Y)计算:endl;if(h=0)coutI(X|Y)=H(X)-H(X|Y)=c-bendl;elsecoutP(r+1,vvu+1vd)为零,中断,无
8、值vvendl;(2)主函数main()实现初始化操作,完成对子函数的调用因为整个程序是写在main函数中,就不列出,会在下面源程序清单中给出程序。3实验数据与实验结果这里设定函数为4行4列的随机矩阵。然后函数归一化,即:把所有数字相加,再用每个数去除,就得到了归一化后的矩阵。而H(X)、H(Y)、H(X,Y)H(X|Y)、I(X|Y)就根据课本上的公式,然后编程。输出结果如下:4程序代码清单:#include#include#include#include#includeusingnamespacestd;voidmain()intk,n,t=0;doublea44,b=0,c=0;sran
9、d(unsigned)time(NULL);for(k=0;k4;k+)for(n=0;n4;n+)akn=rand()%100;t+=akn;endl;cout从0到100间随机取彳#行歹1的random数:for(k=0;k4;k+)for(n=0;n4;n+)coutsetw(5)akn;)coutendl;)cout函数归一化:endl;for(k=0;k4;k+)(for(n=0;n4;n+)(coutsetw(12)akn/t;)coutendl;)coutH(Y)计算:setw(20)H(X)计算:endl;inte=1;for(k=0;k4;k+)(doublei=0,g=0;
10、for(n=0;n4;n+)(i+=(akn/t);g+=(ank/t);gend1;coutP(Y”k+1):isetw(8)P(Xe):+e;b-=(i*10g(i)/10g(2.0);c-=(g*10g(g)/10g(2.0);coutH(Y)=-12P(Y)10gp(Y)=bendl;cend1;coutH(X)=-Ep(X)1ogp(X)=cout联合嫡H(X,Y)计算:endl;b=0;intr,u,h=0;for(k=0;k4;k+)for(n=0;n4;n+)if(akn!=0)b-=(akn/t)*log(akn/t)/log(2.0);elser=k,u=n;h=1;bre
11、ak;)if(h=0)coutH(X,Y)=-EEp(X,Y)logp(X,Y)=bendl;elsecoutP(r+1,vvu+1vd)为零,中断,无值vvendl;coutvv”条件嫡H(X|Y)计算:endl;b=O,h=O;for(k=0;k4;k+)(doublei=0;for(n=0;n4;n+)i+=(akn/t);for(n=0;n4;n+)(if(akn!=0)(b-=(akn/t)*log(akn/t)/i)/log(2.0);)elseh=1;break;)if(h=0)cout”H(X|Y尸-EEP(X,Y)log(P(X,Y)/P(Y)=bendl;elsecoutP
12、(r+1,vvu+1vd)为零,中断,无值vvendl;coutl(X|Y)计算:endl;if(h=0)coutI(X|Y)=H(X)-H(X|Y)=c-bendl;elsecoutP(r+1,vvu+1vd)为零,中断,无值vvendl;实验二简单信源编码方法实现实验目的掌握Huffman编码方法。实验学时2学时实验准备1.熟悉离散信源的编码方法,重点是Huffman编码方法,设计Huffman编码的数据结构和算法;2编写Huffman编码的书面程序代码。实验内容及步骤离散信源的Huffman编、译码方法说明:(1)利用random函数构造一个一维离散随机变量分布P(X);(2)构造离散随
13、机变量的概率压缩表;(3)根据概率压缩表构造Huffman编码表,并实现Huffman编码;(4)完成Huffman译码;(4)编写本次实验的实验报告。附实验二实验内容及程序源程序实验二离散信源的Huffman编、译码方法1 实验内容(1)利用random函数构造一个一维离散随机变量分布P(X);(2)根据概率压缩表构造Huffman编码表,并实现Huffman编码;(3)完成Huffman译码;2 数据结构与算法描述(1)函数的定义:函数的数据成员1. 随机生成归一化一维离散变量函数代码:voidaa(intn)doublew=0;a=newdoublen;srand(unsigned)ti
14、me(NULL);cout随机生成归一化一维离散变量:endl;for ( int i=0;in;i+)(ai=rand()%50;w+=ai;)for(inti=0;in;i+)(ai=ai/w;)doublep;for(inti=0;i=i;j-)(if(ajaj+1)p=aj+1;aj+1=aj;aj=p;coutP(X):;for(inti=0;in;i+)cout.precision(3);coutaisetw(8);2. Huffman译码函数代码:voidhuffman(double*a,string*c,intn)elemmp;stacks(n);double*b;b=newd
15、oublen;for(inti=0;in;i+)bi=ai;double*d;d=newdoublen;for(inti=0;in;i+)di=i;double*e;e=newdoublen;for(inti=0;i=2;m-)bm-2+=bm-1;mp.a2=dm-2;mp.a3=dm-1;s.push(mp);doublemp,mp1;for(inti=0;i=i;j-)if(bUbj+1)mp=bj+1;mp1=dj+1;bO+1=bU;dO+1=dj;bj=mp;dj=mp1;)coutleftsetw(6)nP(X):for(inti=0;im-1;i+)(cout.precisio
16、n(3);coutsetw(8)bi;while(!s.isEmpty()mp=s.pop();for(inti=0;in;i+)if(mp.a2=ei)t=ci;for(inti=0;in;i+)if(mp.a2=ei)ci=t;ci+=0;elseif(mp.a3=ei)ci=t;ci+=1;(2)主函数main)实现初始化操作,完成对子函数的调用voidmain()intn;coutn;c=newstringn;aa(n);huffman(a,c,n);coutendl;coutsetw(6)各项Huffman编码为:endl;for(inti=0;in;i+)cout.precisio
17、n(3);coutsetw(8)ai;cout.precision(0);coutsetw(n+4)ci;coutendl;3 实验数据与实验结果Huffman 编码。测试数据:随机生成归一化离散变量,如下图数据,并计算出各项实验结果:4 程序代码清单:#include#include#include#include#include#include#includeusingnamespacestd;double*a;string*c;structelemdoublea2;doublea3;classstackintsize;inttop;elem*list;publicnewelemsz;st
18、ack(constintsz=0)size=sz;top=0;list=stack()deletelist;voidclear()top=0;voidpush(constelem&item)assert(topsize);listtop+=item;return list-top;elempop()assert(!isEmpty();elemtopValue()constassert(!isEmpty();returnlisttop-1;boolisEmpty()constreturntop=0;voidaa(intn)doublew=0;a=newdoublen;srand(unsigned
19、)time(NULL);cout随机生成归一化一维离散变量:endl;for(inti=0;in;i+)ai=rand()%50;w+=ai;for(inti=0;in;i+)(ai=ai/w;)doublep;for(inti=0;i=i;j-)(if(ajaj+1)(P=aj+1;aj+1=aj;aj=p;coutP(X):;for(inti=0;in;i+)cout.precision(3);coutaisetw(8);voidhuffman(double*a,string*c,intn)elemmp;stacks(n);double*b;b=newdoublen;for(inti=0;
20、in;i+)bi=ai;double*d;d=newdoublen;for(inti=0;in;i+)di=i;double*e;e=newdoublen;for(inti=0;i=2;m-)bm-2+=bm-1;mp.a2=dm-2;mp.a3=dm-1;s.push(mp);doublemp,mp1;for(inti=0;i=i;j-)if(bjbj+1)mp=bj+1;mp1=dj+1;bj+1=bj;dj+1=dj;bj=mp;dj=mp1;)coutleftsetw(6)nP(X):;for(inti=0;im-1;i+)cout.precision(3);coutsetw(8)bi
21、;)while(!s.isEmpty()mp=s.pop();for(inti=0;in;i+)if(mp.a2=ei)(t=ci;)for(inti=0;in;i+)(if(mp.a2=ei)(ci=t;ci+=0;)elseif(mp.a3=ei)ci=t;ci+=1voidmain()intn;coutn;c=newstringn;aa(n);huffman(a,c,n);coutendl;coutsetw(6)各项Huffman编码为:endl;for(inti=0;in;i+)cout.precision(3);coutsetw(8)ai;cout.precision(0);cout
22、setw(n+4)ci;coutendl;实验三典型信道容量计算实验目的掌握用递推算法计算典型信道的容量的方法。实验学时2学时实验准备1熟悉二进信道的概率转移矩阵表示,掌握信道容量的递推算法,设计用递推算法计算二进信道容量的数据结构和算法;2编写用递推算法计算二进信道容量的书面程序代码。实验内容及步骤用递推算法计算二进信道的容量说明:(1)构造各种二进信道的概率转移矩阵;(2)用递推算法计算各种二进信道的容量;(3)不断调整误差精度对系统进行测试,并进行对比分析;(4)编写本次实验的实验报告。附实验三内容及源程序实验三用递推算法计算二进信道的容量1 实验内容(1)构造各种二进信道的概率转移矩阵
23、;(2)用递推算法计算各种二进信道的容量;(3)不断调整误差精度对系统进行测试,并进行对比分析;2 数据结构与算法描述1)函数的定义:函数的数据成员1 .随机生成二元对称信道函数代码:voidaa()doublee=0;cout随机生成二元对称信道为:endl;inti=0;for(intj=0;j2;j+)a0j=rand()%100;e+=a0j;for(intj=0;j2;j+)a0j=a0j/e;a11=a00;a10=a01;for(inti=0;i2;i+)for(intj=0;j2;j+)coutsetw(12)aij;coutendl;2 .随机生成二元删除信道函数代码:voi
24、dcc()doublee=0;cout随机生成二元删除信道为:endl;for(intj=0;j2;j+)(b0j=rand()%100;e+=b0j;)for(intj=0;j2;j+)(b0j=b0j/e;)b02=0;b10=0;e=0;for(intj=1;j3;j+)(b1j=rand()%100;e+=b1j;for(intj=1;j3;j+)b1j=b1j/e;for(inti=0;i2;i+)for(intj=0;j3;j+)coutsetw(12)bij;coutendl;3 .求二元对称信道最大信道容量和最大容量时w的值的函数代码:voidbb()doublew=0;dou
25、blee2=0,0;for(w=0;w=1;w+=0.01)doubletmp=0;tmp=(w*a00+(1-w)*a01)*(log(1/(w*a00+(1-w)*a01)/log(2.0)+(w*a01)+(1-w)*a00)*(log(1/(w*a01)+(1-w)*a00)/log(2.0)-(a00*(log(1/a00)/log(2.0)+(a01*(log(1/a01)/log(2.0);if(e0tmp)e0=tmp;e1=w;cout最大信道容量为:setw(6)e0此时W勺值为:e1endl;coutendl;4 .求二元删除信道最大信道容量和最大容量时w的值的函数代码:
26、voiddd()doubleP22;P10=0;P11=1;doubletemp2=0,1;dodoubletmp1=0,tmp=0;for(inti=0;i2;i+)for(intj=0;j3;j+)if(bij!=0)tmp1+=P1i*bij*log(1.0/bij)/log(2.0);doubletemp223;for(inti=0;i2;i+)for(intj=0;j3;j+)temp2ij=P1i*bij;for(intj=0;j3;j+)temp20j=temp20j+temp21j;for(intj=0;j=temp0)temp0=tmp;temp1=P10;P10+=0.01;P11-=0.01;while(P10=1.00);cout最大信道容量为:temp0信源的wfi为temp1endl;(2)主函数main()实现初始化操作,完成对子函数的调用voidmain()srand(unsigned)time(NULL);aa();bb();cc();dd();3 实验数据与实验结果w的值测试数据:随机生成了2*2矩阵和2*3矩阵,并求得最大容量和实验结果:4 程序代码清单:#include#include#include#includeusingnamespacestd;doublea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26《西门豹治邺》(教学设计)-2024-2025学年统编版语文四年级上册
- 2025年猫爬架合作协议书
- 2024-2025年高中化学 第1章 第3节 课时1 认识同周期元素性质的递变规律教学实录 鲁科版必修2
- 40认识形状的英语单词亲子英语跟读shapes各种各样的形状的英语问答
- 三角形的内角和(拓展)(教学设计)-2023-2024学年北师大版六年级下册数学
- 2025年大、中容量数字程控交换机项目发展计划
- mmpi在心理学的运用
- 浙教版2023三年级下信息科技 第12课 描述主题学习(教学设计)
- 医院装修合同(知识研究版本)
- 室内环境管理工作总结与卫生标准计划
- 2025年全国国家版图知识竞赛(中小学组)题库及答案
- 矿山设备与工具介绍
- 2025年常州机电职业技术学院单招职业倾向性测试题库参考答案
- 2024年四川大学华西医院招聘考试真题
- 2025年安徽卫生健康职业学院单招职业技能测试题库及参考答案1套
- 2025年宁夏工商职业技术学院单招职业适应性测试题库必考题
- 智慧矿山无人机自动巡检解决方案
- 英语语法-时间介词-练习题(带答案)
- 《国核-核安全文化》课件
- 17J008挡土墙(重力式、衡重式、悬臂式)图示图集
- 气体充装安全培训课件
评论
0/150
提交评论