信息论实验报告2
信息论实验报告
![信息论实验报告](https://img.taocdn.com/s3/m/29fc87e75ef7ba0d4a733b72.png)
信息论实验报告班级:姓名:学号:实验一:信道容量的迭代算法1.实验目的(1)进一步熟悉信道容量的迭代算法;(2)学习如何将复杂的公式转化为程序;(3)掌握C 语言数值计算程序的设计和调试技术。
2、实验要求(1)已知:信源符号个数r 、信宿符号个数s 、信道转移概率矩阵P 。
(2)输入:任意的一个信道转移概率矩阵。
信源符号个数、信宿符号个数和每个具体的转移概率在运行时从键盘输入。
(3)输出:最佳信源分布P*,信道容量C 。
3.算法分析1:procedure CHANNEL CAPACITY(r,s,(ji p )) 2:initialize:信源分布i p =1/r ,相对误差门限σ,C=—∞3:repeat4:5:6: C 2211log [exp(log )]r s ji ij r j p φ==∑∑7:until C Cσ∆≤8:output P*= ()i r p ,C9:end procedure4.程序调试21211exp(log )exp(log )sji ij j r s ji ij r j p p φφ===∑∑∑i p 1i ji r i ji i p p p p =∑ijφ1、头文件引入出错f:\visualc++\channel\cpp1.cpp(4) : fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory————#include<unistd.h>纠错://#include<unistd.h>f:\visualc++\channel\cpp1.cpp(5) : fatal error C1083: Cannot open include file: 'values.h': No such file or directory————#include<values.h>纠错://#include<values.h>2、变量赋值错误f:\visualc++\channel\cpp1.cpp(17) : error C2065: 'ij' : undeclared identifierf:\visualc++\channel\cpp1.cpp(17) : error C2440: 'initializing' : cannot convert from 'int' to 'float ** ' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast————float **phi_ij=ij=NULL;纠错:float **phi_ij=NULL;3、常量定义错误f:\visualc++\channel\cpp1.cpp(40) : error C2143: syntax error : missing ';' before 'for' ————for(i=0;i<r;i++)phi_ij[i]=(float *)calloc(s,sizeof(float));f:\visualc++\channel\cpp1.cpp(52) : error C2021: expected exponent value, not ' '————if(fabs(validate -1.0)>DELTA)f:\visualc++\channel\Cpp1.cpp(84) : error C2021: expected exponent value, not ' '————if(fabs(p_j)>=DELTA)f:\visualc++\channel\Cpp1.cpp(100) : error C2021: expected exponent value, not ' '————if(fabs(phi_ij[i][j])>=DELTA)f:\visualc++\channel\Cpp1.cpp(116) : error C2021: expected exponent value, not ' ' ————while(fabs(C-C_pre)/C>DELTA);纠错:#define DELTA 0.000001;F:\visualc++\channel\Cpp1.cpp(68) : error C2065: 'MAXFLOAT' : undeclared identifierF:\visualc++\channel\Cpp1.cpp(68) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data————C=-MAXFLOAT;纠错:#define MAXFLOAT 1000000;3、引用中文逗号f:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xa1'f:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xb1'f:\visualc++\channel\cpp1.cpp(60) : error C2065: 'Starting' : undeclared identifierf:\visualc++\channel\cpp1.cpp(60) : error C2059: syntax error : '.'f:\visualc++\channel\cpp1.cpp(60) : error C2017: illegal escape sequencef:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xa1'f:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xb1'————fprintf(stdout,”Starting..\n”);纠错:fprintf(stdout,"Starting..\n");4、没有进行强制转换F:\visualc++\channel\Cpp1.cpp(65) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data————p_i[i]=1.0/(float)r;纠错:p_i[i]=(float)(1.0/(float)r);F:\visualc++\channel\Cpp1.cpp(101) : warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data————sum[i]+=p_ji[i][j]*log( phi_ij[i][j])/ log(2.0);纠错:sum[i]+=(float)(p_ji[i][j]*log( phi_ij[i][j])/ log(2.0));F:\visualc++\channel\Cpp1.cpp(103) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data————sum[i]=pow(2.0,sum[i]);纠错:sum[i]=(float)(pow(2.0,sum[i]));F:\visualc++\channel\Cpp1.cpp(114) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data————C= log(p_j)/ log(2.0);纠错:C= (float)(log(p_j)/ log(2.0));4、表达式错误F:\visualc++\channel\Cpp1.cpp(86) : error C2065: 'phi_ji' : undeclared identifierF:\visualc++\channel\Cpp1.cpp(86) : error C2109: subscript requires array or pointer typeF:\visualc++\channel\Cpp1.cpp(86) : error C2109: subscript requires array or pointer type ————phi_ij[i][j]=p_i[i]* phi_ji[i][j]/p_j;纠错:phi_ij[i][j]=p_i[i]* p_ji[i][j]/p_j;F:\visualc++\channel\Cpp1.cpp(122) : error C2065: 'fprint' : undeclared identifierF:\visualc++\channel\Cpp1.cpp(122) : error C2018: unknown character '0xa1'F:\visualc++\channel\Cpp1.cpp(122) : error C2018: unknown character '0xb1'F:\visualc++\channel\Cpp1.cpp(122) : error C2065: 'The' : undeclared identifierF:\visualc++\channel\Cpp1.cpp(122) : error C2146: syntax error : missing ')' before identifier 'iteration'F:\visualc++\channel\Cpp1.cpp(122) : error C2017: illegal escape sequenceF:\visualc++\channel\Cpp1.cpp(122) : error C2017: illegal escape sequenceF:\visualc++\channel\Cpp1.cpp(122) : error C2018: unknown character '0xa1'F:\visualc++\channel\Cpp1.cpp(122) : error C2018: unknown character '0xb1'————fprint(stdout,”The iteration number is %d.\n\n”,k);纠错:fprintf(stdout,"The iteration number is %d.\n\n",k);F:\visualc++\channel\Cpp1.cpp(145) : error C2143: syntax error : missing ')' before ';' ————free((p_i);纠错:free(p_i);5、没有返回值F:\visualc++\channel\Cpp1.cpp(149) : warning C4508: 'main' : function should return a value; 'void' return type assumed、纠错:return 0;5.改进程序/*引入头文件*/#include<stdio.h>#include<math.h>#include<stdlib.h>/*定义常量*/#define DELTA 0.0000001//DELTA为相对误差门限#define MAXFLOAT 1000000;//MAXFLOAT为初始化信道容量值int main( void){/*定义全局变量*//*register允许直接从寄存器中读取变量,提高速率*/register int i,j;//i、j为整型变量register int k;//信道容量迭代计算次数int r,s;//r为信源符号个数,s为新宿符号个数float *p_i=NULL;//r个信源符号发生的概率float **p_ji=NULL;//信源到新宿的信道转移概率矩阵Pfloat **phi_ij=NULL;float C,C_pre,validate;//C为信道容量,C_pre为信道最大容量,validate为判定输入转移概率矩阵是否合法float * sum=NULL;//信源符号所带的全部信息量float p_j;//条件概率/*输入信源符号和新宿符号个数*/printf("请输入信源符号个数r、信宿符号个数s...\n");printf("+++++注意!!!r必须大于等于s!!+++++\n");fscanf(stdin,"%d",&r);fscanf(stdin,"%d",&s);/*为 p_i,p_ji 和 phi_ij 分配内存空间*/p_i=(float *)calloc(r,sizeof(float));p_ji=(float **)calloc(r,sizeof(float));/*为每个p_ji分配大小为s的内存空间*/for(i=0;i<r;i++)p_ji[i]=(float *)calloc(s,sizeof(float));phi_ij=(float **)calloc(r,sizeof(float*));/*输入转移概率矩阵*/for(i=0;i<r;i++)/*为每个phi_ij分配大小为s的内存空间*/phi_ij[i]=(float *)calloc(s,sizeof(float));printf("信道转移概率矩阵P...\n");for(i=0;i<r;i++)for(j=0;j<s;j++)fscanf(stdin,"%f",&p_ji[i][j]);/*判定输入的转移概率矩阵是否正确*/for(i=0;i<r;i++){validate=0.0;for(j=0;j<s;j++){validate +=p_ji[i][j];}if((validate-1.0)>=0)//如果转移概率矩阵的概率和大于1,输入数据不合法{fprintf(stdout,"invalid input data.\n");exit(-1);}}/*显示开始计算..*/fprintf(stdout,"Starting..\n");/*初始化 p_i 和 phi_ij*/for(i=0;i<r;i++){/* p_i为等概率,即概率为1/r*/p_i[i]=(float)(1.0/(float)r);}/*初始化信道容量c,迭代次数k和临时变量variable*/C=-MAXFLOAT;k=0;/* 为sum分配大小为r的内存空间*/sum=(float *)calloc(r,sizeof(float));/*开始迭代计算*/do{k++;//每进行一次迭代,迭代次数k加1/* 计算phi_ij(k)*/for(j=0;j<s;j++){p_j=0.0;for(i=0;i<r;i++)p_j+=p_i[i]*p_ji[i][j];if(fabs(p_j)>=DELTA)for(i=0;i<r;i++)phi_ij[i][j]=p_i[i]* p_ji[i][j]/p_j;elsefor(i=0;i<r;i++)phi_ij[i][j]=0.0;}/*计算p_i(k+1)*/p_j=0.0;for(i=0;i<r;i++){sum[i]=0.0;for(j=0;j<s;j++){/*相对误差门限为0*/if(fabs(phi_ij[i][j])>=DELTA)sum[i]+=(float)(p_ji[i][j]*log( phi_ij[i][j])/ log(2.0)); }sum[i]=(float)(pow(2.0,sum[i]));p_j+=sum[i];}for(i=0;i<r;i++){p_i[i]=sum[i]/p_j;}C_pre=C;C= (float)(log(2.0)/log(p_j) );}while(fabs(C-C_pre)/C>DELTA);free(sum);sum=NULL;/*显示结果*/fprintf(stdout,"The iteration number is %d.\n\n",k);//迭代次数fprintf(stdout,"The capacity of the channel is %.6f bit/symbol:\n\n",C);//信道容量fprintf(stdout,"The best input probability distribution is :\n");//最佳信源分布 for(i=0;i<r;i++)fprintf(stdout,"%.6f\n",p_i[i]);fprintf(stdout,"\n");/* 释放指针空间*/for(i=s-1;i>=0;i--){free(phi_ij[i]);phi_ij[i]=NULL;}free(phi_ij);phi_ij=NULL;for(i=r-1;i>=0;i--){free(p_ji[i]);p_ji[i]=NULL;}free(p_ji);p_ji=NULL;free(p_i);p_i=NULL;exit(0);return 0;}6.实验结果6.实验二:唯一可译码判决准则1.实验目的(1)进一步熟悉唯一可译码判决准则;(2)掌握C语言字符串处理程序的设计和调试技术。
信息基础论实验报告
![信息基础论实验报告](https://img.taocdn.com/s3/m/e415fe4fcd7931b765ce0508763231126edb779a.png)
一、实验目的1. 理解信息的基本概念和特征。
2. 掌握信息系统的基本组成和功能。
3. 了解信息处理的基本方法和技术。
4. 培养运用信息理论分析和解决实际问题的能力。
二、实验内容1. 信息的基本概念和特征2. 信息系统的组成和功能3. 信息处理的基本方法和技术4. 信息安全与伦理三、实验步骤1. 信息的基本概念和特征(1)查阅资料,了解信息的基本概念和特征。
(2)通过实例分析,加深对信息概念的理解。
(3)讨论信息在日常生活、工作中的应用。
2. 信息系统的组成和功能(1)学习信息系统组成的基本要素,如硬件、软件、数据等。
(2)了解信息系统的功能,包括信息收集、处理、存储、传输、检索等。
(3)分析信息系统在各个领域的应用。
3. 信息处理的基本方法和技术(1)学习信息处理的基本方法,如编码、解码、压缩、解压缩等。
(2)了解信息处理技术的应用,如数字信号处理、图像处理、语音处理等。
(3)通过实例分析,掌握信息处理技术在实际问题中的应用。
4. 信息安全与伦理(1)学习信息安全的基本概念和重要性。
(2)了解信息安全的技术手段,如加密、认证、防火墙等。
(3)讨论信息伦理问题,如隐私保护、知识产权等。
四、实验结果与分析1. 信息的基本概念和特征通过查阅资料和实例分析,我们了解到信息是反映客观事物属性和运动状态的知识,具有客观性、普遍性、传递性、共享性、时效性等特征。
信息在日常生活、工作中的应用十分广泛,如天气预报、电子商务、社交网络等。
2. 信息系统的组成和功能通过学习,我们了解到信息系统由硬件、软件、数据、人员等要素组成。
信息系统的功能包括信息收集、处理、存储、传输、检索等。
在各个领域,如政府、企业、教育等,信息系统都发挥着重要作用。
3. 信息处理的基本方法和技术通过学习,我们掌握了信息处理的基本方法,如编码、解码、压缩、解压缩等。
同时,我们了解到信息处理技术在数字信号处理、图像处理、语音处理等领域的应用,为解决实际问题提供了有力支持。
信息导论实验报告总结(3篇)
![信息导论实验报告总结(3篇)](https://img.taocdn.com/s3/m/50ec13c2294ac850ad02de80d4d8d15abe2300df.png)
第1篇一、实验背景随着信息技术的飞速发展,信息已成为现代社会的重要资源。
为了让学生更好地了解信息的基本概念、信息处理技术以及信息在各个领域的应用,我们开展了信息导论实验。
本次实验旨在通过实际操作,使学生掌握信息处理的基本方法,提高信息素养,为后续相关课程的学习打下基础。
二、实验目的1. 理解信息的基本概念,掌握信息处理的基本方法。
2. 掌握信息检索技巧,提高信息获取能力。
3. 了解信息在各个领域的应用,增强信息意识。
4. 培养学生的动手能力和团队协作精神。
三、实验内容1. 信息检索实验:通过搜索引擎、数据库等工具,查找特定主题的相关信息,并评价信息的可靠性。
2. 信息处理实验:运用文字处理软件、表格处理软件等工具,对收集到的信息进行整理、分析、加工和展示。
3. 信息安全实验:学习信息加密、数字签名等安全技术在信息传输和存储中的应用。
4. 信息可视化实验:运用图表、图形等手段,将抽象的信息转化为直观的可视化形式。
四、实验过程1. 实验准备:学生分组,明确实验任务,查阅相关资料,准备实验所需的软件和工具。
2. 实验实施:按照实验指导书的要求,完成各项实验任务。
3. 实验总结:对实验过程中遇到的问题进行分析,总结实验经验,撰写实验报告。
五、实验结果与分析1. 信息检索实验:学生通过搜索引擎、数据库等工具,成功检索到所需信息,并学会评价信息的可靠性。
2. 信息处理实验:学生运用文字处理软件、表格处理软件等工具,对收集到的信息进行整理、分析、加工和展示,提高了信息处理能力。
3. 信息安全实验:学生掌握了信息加密、数字签名等安全技术在信息传输和存储中的应用,增强了信息安全意识。
4. 信息可视化实验:学生通过图表、图形等手段,将抽象的信息转化为直观的可视化形式,提高了信息传达效果。
六、实验心得与体会1. 信息检索实验让我认识到,信息检索是获取信息的重要途径,掌握信息检索技巧对于提高信息素养至关重要。
2. 信息处理实验让我体会到,信息处理能力是信息时代必备的基本技能,通过实际操作,我学会了如何高效地处理信息。
信息论实习报告
![信息论实习报告](https://img.taocdn.com/s3/m/440876426d175f0e7cd184254b35eefdc8d31588.png)
实习报告实习单位:某某信息科技有限公司实习时间:2023年2月18日至2023年3月18日实习岗位:信息论实习生一、实习背景及目的随着信息技术的快速发展,信息论作为一门研究信息传输和处理的理论基础,在各领域中发挥着越来越重要的作用。
为了加深我对信息论知识的理解,提高实际操作能力,我选择了某某信息科技有限公司进行为期一个月的实习。
实习目的在于将所学理论知识与实际工作相结合,拓宽知识面,培养实践操作技能。
二、实习内容及收获1. 实习内容(1)参与公司项目研发,负责信息传输过程中的信号处理和编码工作。
(2)协助工程师进行实验室测试,收集实验数据,分析实验结果。
(3)学习公司内部技术文档,了解公司的信息论技术应用和发展方向。
(4)参加公司组织的培训课程,提升自己在信息论方面的专业知识。
2. 实习收获(1)理论知识应用:通过实际参与项目研发,我将所学的信息论知识应用于实际工作中,提高了理论知识的实际运用能力。
(2)实践操作技能:在实验室测试过程中,我学会了使用各种测试设备,掌握了实验数据的收集和分析方法。
(3)团队协作:与公司同事共同完成项目任务,我学会了如何进行有效沟通,提高了团队协作能力。
(4)行业认识:通过实习,我更加了解了信息论在实际应用中的重要性,以及对相关行业的发展趋势有了更深入的认识。
三、实习中遇到的问题及解决办法在实习过程中,我遇到了一些问题,主要包括:(1)理论知识与实际应用的衔接:在实际工作中,我发现所学理论知识并不能直接应用于实际问题,需要不断地学习和摸索。
(2)技术难题:在项目研发过程中,遇到了一些技术难题,需要向工程师请教和寻求帮助。
解决办法:(1)加强学习:通过阅读相关资料和参加公司培训,提高自己的理论水平和实际操作能力。
(2)积极请教:遇到问题时,主动向工程师请教,争取他们的指导和帮助。
四、实习总结通过本次实习,我对信息论在实际应用中的重要性有了更深入的认识,同时自己的实践操作能力和团队协作能力也得到了锻炼和提高。
信息论实验报告
![信息论实验报告](https://img.taocdn.com/s3/m/580b768ba0116c175f0e48dd.png)
桂林理工大学实验报告班级:通信09-2班学号:3090731219 姓名:崔泽实验名称:计算离散信源的熵日期:2011年5月10日一、实验目的1、熟悉离散信源的特点2、熟悉离散信源平均信息量的计算方法二、实验内容1、写出计算自信息量的Matlab程序2、写出计算离散信源平均信息量的Matlab程序3、掌握二元离散信源的最大信息量与概率的关系4、完成习题三、习题1、程序:x=[0.5 0.25 0.125 0.125 ];y=[0.875 0.125];b=-x.*log2(x)H1=sum(b)c=-y.*log2(y)H1=sum(c)X=-log2(x)Y=-log2(y)程序运行结果:b = 0.5000 0.5000 0.3750 0.3750H1 =1.7500c = 0.1686 0.3750H1 = 0.5436X = 1 2 3 3Y =0.1926 3.0000由上面结果可以看出,甲信源的熵为: 1.7500已信源的熵为:0.5436甲地各种天气的信息量晴,云,大雨,小雨分别为1 2 3 3已地各种天气的信息量晴,小雨分别为0.1926 3.00002、Matlab程序:x=[1/4 1/8 1/8 3/16 5/16];a=-x.*log2(x);H=sum(a)程序运行结果:H = 2.22723、Matlab程序:X=[1/4 1/8 1/8 1/2];a=-x.*log2(x);H=sum(a)程序运行结果:H = 1.75003、Matlab程序:p=0.00011:0.1:0.99999;x=[p,1-p];a=-x.*log2(x);H=sum(a)plot(x,a)pHH = 7.0879当p呈等概率分布时,平均信息量达到最大值7.0879桂林理工大学实验报告班级:通信09-2班学号:3090731225 姓名:崔泽实验名称:离散信道德平均互信息及其信道容量的计算日期:2011年5月20日一、实验目的1、了解信道传输概率的状态图和信道转移概率的矩阵的特点2、了解什么是信道容量和最佳输入概率分布3、熟悉计算平均互信息和信道容量的计算步骤二、实验内容1、写出计算互信息和平均互信息的Matlab程序2、写出计算几种特殊离散信道的信道容量的Matlab程序3、完成习题三、习题1、Matlab程序:w=0.01:0.1:0.99;a1=log2(0.8./(0.6.*w+0.2));a2=log2(0.2./((-0.6).*w+0.8))I=0.8.*w.*a1+0.2.*(1-w).*a2+0.2.*w.*a2+0.8.*(1-w).*a1plot(w,I)程序运行结果:Imax=1.1681;即 C=1.1681;2、(1)原理:C=logr Matlab程序:r=3;c=log2(r)运算结果:c =1.5850(2)原理:C=log2(s)Matlab程序:S=2;C=log2(s)运行结果:C=1(3)原理:C=log2(s)-H(p1,p2,…,ps); Matlab程序:s=4;c=log2(s)+2/3*log2(1/3)+1/3*log2(1/6) 运行结果:c =0.0817(4)4、一般信道,其信道矩阵为:111244121636113884P⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦桂林理工大学实 验 报 告班级:通信09-2班 学号:3090731225 姓名:崔泽 实验名称:有噪信道编码定理 日期:2011年5月30日一、实验目的1、理解有噪信道编码定理的物理意义2、熟悉 Matlab 编程二、实验内容1、学习应用有噪信道编码定理解决实际问题2、将程序在计算机上仿真实现,验证程序的正确性3、完成习。
信息论课程实验报告
![信息论课程实验报告](https://img.taocdn.com/s3/m/dceea74f69eae009581becee.png)
中国地质大学(武汉)CHINA UNIV ERSIT Y OF GEOSCIENCES信息论课程实验报告指导老师:严军姓名:刘一龙班级:71082-14学号:20081002007中国地质大学(武汉)2011年6月实验一构造(7,4)系统码一、实验题目Construct a systematic (7,4) linear block code. Y ou can use c / MA TLAB / HDL (VHDL or Verilog-HDL) to describe it. Please write the detail of how to realize it in computer language. And list the program lines.二、实验程序算法设计:利用H的线性独立,通过n的二进制形式构造出H,然后利用H构造出G。
本算法具有通用性,不仅可以计算出(7,4)的生成矩阵,还可以构造出(15,11),(31,26)的生成矩阵。
Matlab程序:clc;disp('请输入系统码n的值');n = input('n=');disp('请输入系统码k的值');k = input('k=');r = n-k;temp=[];for i=1:ny=dec2bin(i,r);for j=1:rtemp(i,j)=mod(y(j),2);endendfor i=1:rt = temp(i,:);temp(i,:)=temp(2^(i-1),:);temp(2^(i-1),:)=t;endfor i=1:(fix(r/2))t = temp(:,i);temp(:,i)=temp(:,r-i+1);temp(:,r-i+1)=t;endH = temp';%-----构造矩阵G--------%P=H(:,r+1:n);G=[P',eye(k)];disp('生成矩阵');Gdisp('校验矩阵');H三、实验结果请输入系统码n的值n=7请输入系统码k的值k=4生成矩阵G =1 1 0 1 0 0 01 0 1 0 1 0 00 1 1 0 0 1 01 1 1 0 0 0 1校验矩阵H =1 0 0 1 1 0 10 1 0 1 0 1 10 0 1 0 1 1 1请输入系统码n的值n=15请输入系统码k的值k=11生成矩阵G =Columns 1 through 81 0 1 0 1 0 0 00 1 1 0 0 1 0 01 1 1 0 0 0 1 01 1 0 0 0 0 0 11 0 0 1 0 0 0 00 1 0 1 0 0 0 01 1 0 1 0 0 0 00 0 1 1 0 0 0 01 0 1 1 0 0 0 00 1 1 1 0 0 0 01 1 1 1 0 0 0 0 Columns 9 through 150 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 01 0 0 0 0 0 00 1 0 0 0 0 00 0 1 0 0 0 00 0 0 1 0 0 00 0 0 0 1 0 00 0 0 0 0 1 00 0 0 0 0 0 1校验矩阵H =Columns 1 through 81 0 0 0 1 0 1 10 1 0 0 0 1 1 10 0 1 0 1 1 1 00 0 0 1 0 0 0 0Columns 9 through 151 0 1 0 1 0 10 1 1 0 0 1 10 0 0 1 1 1 11 1 1 1 1 1 1实验二循环码一、实验题目We have already learned how to encode and decode cyclic codes. Please use the generator polynomial g(x)=1+x+x2+x4to construct a (7,3) code. And if the received code vector is [1 1 0 0 1 1 1], how to decode it? Use c / MATLAB / HDL language to realize the encoding and decoding system.二、实验程序算法设计:通过计算自己将生成矩阵G输入到计算机,然后输入要传输的信息m,利用c=mG 自动生成码字c。
信息论实验报告
![信息论实验报告](https://img.taocdn.com/s3/m/076236707275a417866fb84ae45c3b3567ecdde3.png)
一、实验目的1. 理解信息论的基本概念和原理;2. 掌握信息熵、条件熵、互信息等基本概念的计算方法;3. 学会使用 MATLAB 进行信息论实验,并分析实验结果;4. 提高编程能力和数据分析能力。
二、实验原理信息论是一门研究信息传输、处理和存储的学科,其核心是信息熵。
信息熵是衡量信息不确定性的度量,表示信息中所包含的平均信息量。
信息熵的计算公式如下:H(X) = -Σ p(x) log2(p(x))其中,H(X) 表示随机变量 X 的熵,p(x) 表示 X 取值为 x 的概率。
条件熵是衡量在已知另一个随机变量 Y 的条件下,随机变量 X 的不确定性。
条件熵的计算公式如下:H(X|Y) = -Σ p(x,y) log2(p(x|y))其中,H(X|Y) 表示在 Y 已知的条件下 X 的熵,p(x,y) 表示 X 和 Y 同时取值为x 和 y 的概率,p(x|y) 表示在 Y 已知的情况下 X 取值为 x 的条件概率。
互信息是衡量两个随机变量之间相互依赖程度的度量。
互信息的计算公式如下:I(X;Y) = H(X) - H(X|Y)其中,I(X;Y) 表示随机变量 X 和 Y 之间的互信息。
三、实验内容1. 使用 MATLAB 编写程序,计算给定信源的概率分布,并计算其熵;2. 使用 MATLAB 编写程序,计算给定两个随机变量的联合概率分布,并计算其条件熵和互信息;3. 分析实验结果,验证信息熵、条件熵和互信息之间的关系。
四、实验步骤1. 输入信源的概率分布,使用 MATLAB 计算 H(X);2. 输入两个随机变量的联合概率分布,使用 MATLAB 计算 H(X,Y)、H(X|Y) 和I(X;Y);3. 分析实验结果,比较 H(X)、H(X|Y) 和 I(X;Y) 之间的关系。
五、实验结果与分析1. 信源概率分布及其熵输入信源的概率分布为:p(x) = [0.2, 0.3, 0.5]计算得到:H(X) = -0.2 log2(0.2) - 0.3 log2(0.3) - 0.5 log2(0.5) ≈ 1.5852. 两个随机变量的联合概率分布及其条件熵和互信息输入两个随机变量的联合概率分布为:p(x,y) = [0.1, 0.2, 0.3, 0.4]计算得到:H(X,Y) = -0.1 log2(0.1) - 0.2 log2(0.2) - 0.3 log2(0.3) - 0.4log2(0.4) ≈ 2.097H(X|Y) = -0.1 log2(0.1) - 0.2 log2(0.2) - 0.3 log2(0.3) - 0.4log2(0.4) ≈ 1.585I(X;Y) = H(X) - H(X|Y) ≈ 0.512分析实验结果,可以发现:(1)信息熵 H(X) 表示信源中包含的平均信息量,当信源概率分布越均匀时,信息熵越大;(2)条件熵 H(X|Y) 表示在已知随机变量 Y 的条件下,随机变量 X 的不确定性,当 X 和 Y 之间的依赖程度越高时,条件熵越小;(3)互信息 I(X;Y) 表示随机变量 X 和 Y 之间的相互依赖程度,当 X 和 Y 之间的依赖程度越高时,互信息越大。
信息论实验2
![信息论实验2](https://img.taocdn.com/s3/m/4097653e5727a5e9856a61d9.png)
《信息论与编码》实验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)以教材例题为算例,将该编码方法用代码实现。
信息论实验报告
![信息论实验报告](https://img.taocdn.com/s3/m/e5ad3ca6ee06eff9aef807f9.png)
前言信息论是现代通信与信息工程的理论基础。
作为电子信息科学与技术专业本科生的学科基础课,本课程主要讲授:信息的定义和测度、信源和信息熵、连续熵和信息变差、信道和互信息、平均互信息和信道容量、数据处理和信息测量理论、无失真信源编码理论和编码方法等内容。
本课程按“单符号离散信息系统”、“多符号离散信息系统”、“连续信息系统”三个“系统”层面,逐步深入展开,以严密的数学分析贯串始终。
通过教学,使学生掌握信息理论的基本概念和信息分析方法,为今后进一步研究信息科学和信息技术打下坚实的理论基础。
实验一:唯一可译码判断实验学时:3实验类型:(演示、验证、综合、√设计、研究)实验要求:(√必修、选修)一、实验目的通过本次试验了解唯一可译码地判断原理;实现用C语言编写判断唯一可译码地程序二、实验内容编程实现唯一可译码的判决准则―――Sardinas-Patterson算法三、实验原理、方法和手段Sardinas-Patterson算法描述:设C为码字集合,按以下步骤构造此码的尾随后缀集合F:(1) 考查C中所有的码字,若Wi是Wj的前缀,则将相应的后缀作为一个尾随后缀放入集合F0中;(2) 考查C和Fi两个集合,若Wj∈C是Wi∈Fi的前缀或Wi∈Fi是Wj∈C的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1中;(3)F=∪Fi即为码C的尾随后缀集合;(4) 若F中出现了C中的元素,则算法终止,返回假(C不是唯一可译码);否则若F中没有出现新的元素,则返回真。
在我们设计的算法中,需要注意的是我们需要的是先输出所有尾随后缀的集合,然后再判断该码是否是唯一可译码,即如F中出现了C中的元素,则C不是唯一可译码,否则若F中没有出现新的元素,则C为唯一可译码。
而不是F中出现C中的元素就终止,这也是在本题的要求中需要注意的问题。
1、概要设计:由于需要判断尾随后缀,所以我们需要反复的比较C和F中的码字。
1)首先我们用一个b[30][30]的数组来存放所有的尾随后缀的集合;用Q记录所有尾随后缀的个数;2)用数组a[30][30]来存放输入的码字,L[30]来存放码字的长度;通过一个双重循环并调用houzhui(a[i],a[j],L[i],L[j])函数来找到a[30][30]中的为随后缀,即:for(i=0;i<n-1;i++){for(j=0;j<n;j++){if(i!=j&&L[i]<L[j])HuoZhui(a[i],a[j],L[i],L[j]);}}3)通过判断Q是否大于0,如果不大于0,即b[30][30]中没有码字,也就是不存在尾随后缀,那么可判断a[30][30]是唯一可译码,否则进行如下操作;4)计算b[30][30]中尾随后缀的长度,用k1表示;并调用HuoZhui(b[i],a[j],k1,L[j])其中k1<L[j]来a[30][30]中所存在的后缀,并加入到b[30][30]中,通过一个循环,找到a[30][30]中所有尾随后缀;即for(i=0;i<Q;i++){k1=strlen(b[i]);for(j=0;j<n;j++){if(k1<L[j])HuoZhui(b[i],a[j],k1,L[j]);}}5)寻找b[30][30]中的尾随后缀;用k2表示b[30][30]中码字的长度,并调用HuoZhui(a[i],b[j],L[i],k2)来实现,其中k2>L[j];通过循环调用即可找到b[30][30]中的所有尾随后缀,最后再将他们分别存放在b[30][30]中;即通过for(i=0;i<n;i++){for(j=0;j<Q;j++){k2=strlen(b[j]);if(k2>L[i]){HuoZhui(a[i],b[j],L[i],k2);}}}6)在反复调用HuoZhui(a[i],a[j],L[i],L[j])函数中如果b[30][30]中有重复出现的,即尾随后缀相同的不用再次放入b[30][30]中。
信息论与编码课程实验报告
![信息论与编码课程实验报告](https://img.taocdn.com/s3/m/b228800a0740be1e650e9a37.png)
福建农林大学计算机与信息学院信息工程类信息论与编码课程实验报告实验项目列表实验名称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)来表示。
语声信源的统计特性主要有语声的幅度概率分布、自相关函数、语声平均功率谱以及语声共振峰频率分布等。
实验结果表明语声的幅度概率分布可用伽玛(γ)分布或拉普拉斯分布来近似。
信息论实验报告(实验二、离散信道容量的计算)
![信息论实验报告(实验二、离散信道容量的计算)](https://img.taocdn.com/s3/m/76a9100011a6f524ccbff121dd36a32d7375c70a.png)
学生实验报告院别电子信息学院课程名称信息论语编码实验班级实验名称实验二、离散信道容量的计算姓名实验时间学号指导教师成绩报告内容一、实验目的和任务1、理解和掌握信道容量的概念和物理意义;2、了解信道容量的计算方法3、采用计算机编程实现(MATLAB)二、实验原理介绍三、实验设备介绍1、计算机2、编程软件MATLAB6.5以上四、实验内容和步骤分别求出如下信道的信道容量1、信道转移概率矩阵为1/31/31/61/61/61/61/31/3P ⎡⎤=⎢⎥⎣⎦2、信道转移概率矩阵为:1/31/31/61/61/61/31/61/3P ⎡⎤=⎢⎥⎣⎦1、面出程序设计的流程图。
2、写出在调试过程中出现的问题。
3、 对实验的结果进行分析。
五、实验数据记录六、实验结论与心得通过本次实验,加强了对matlab 程序的学习,进一步提高了我的编程能力。
尊敬的赞助商:**于200X年X月X日举办一个全校性的综合型运动会,历时一周。
期间包括三个部分:开幕式文艺演出、运动会和闭幕式颁发奖项(两天)。
我们校学生会外联部是此类校园活动指定宣传策划单位,对商家赞助大学生活动的可行性,特别是赞助我校运动会活动的可行性有较深入的了解。
现在就让我们为贵公司作此赞助可行性报告。
一、行性分析1、本次运动会得到了学院团委和学校相关部门的大力支持,规模大、参与者多,能吸引更多师生及其家属来观看,深受同学欢迎,并推动学校体育事业的发展,必引起全校性的轰动。
2、在校大学生达XXXX余人,人流量大达到运动会每天入场观看人次为XXXX左右。
人口密集,而且本校的消费能力较高,为贵公司宣传的成效更明显。
3、本次活动得到师生关注,贵公司的产品也将得到大力的宣传。
二、宣传方式1、横幅:为期一周的大横幅宣传,在学校内悬挂横幅,(横幅内容为运动会的内容和公司的相关宣传--赞助商名称)活动前三天粘贴在运动场等人流量最多的位置。
悬挂时间是一天24小时不间断性。
2、我们将在运动会的宣传海报中点明贵公司为赞助单位。
信息论与编码实验二
![信息论与编码实验二](https://img.taocdn.com/s3/m/b88452024a7302768e993986.png)
实验二 离散信道及其容量一、实验目的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、离散对称信道:当离散准对称信道划分的子集只有一个时,信道关于输入和输出对称。
南昌大学 信息论实验二
![南昌大学 信息论实验二](https://img.taocdn.com/s3/m/074f3d51cf84b9d528ea7a77.png)
南昌大学实验报告学生姓名: xx 学 号: xx 专业班级: xx实验类型:□ 验证 □ 综合 □ 设计 □ 创新 实验日期: 2016.11.26 实验成绩:实验二、强对称信道的信道容量一、实验目的1、利用MATLAB 数值模拟强对称信道的信道容量1、利用仿真图形加深对强对称信道的信道容量物理意义及其性质的理解二、实验内容1、MATLAB 画出强对称信道的图形三、强对称信道定义:若对称信道中输入符号和输出符号个数相同,且信道中总的错误概率为p ,对称地平均分配给r-1个输出符号,r 为输入输出符号的个数,即信道矩阵为:该信道容量C 为:)()1log(log 1log 1)1()1log()1(log )(log 2p H r p r r p r p r p p r p H r C ---=---+--+=-=的行矢量 式中)1log()1(log )(2p p p p p H ----= 四、MATLAB 代码及运行结果1、MATLAB 代码clc;clear;linwidd=1;fontt=20;r=2;p0=0;pd=1;N=20;p=linspace(p0,pd,N);q=1-p;H=-p.*log2(p)-q.*log2(q);%信息熵C=log2(r)-p.*log2(r-1)-H;subplot(2,2,1)plot(p,C,'k:','linewidth',linwidd)title('信道容量')fontt=10;text(0.5,-log2(0.5),'\leftarrow I(0.5)','Fontsize',fontt) box on;subplot(2,2,2)stem(p,C)subplot(2,2,3)stem(p,C,'r*')subplot(2,2,4)bar(p,C,'r')[Imin,n1]=min(C)[Imax,n2]=max(C)xlim([p0 pd])ylim([Imin Imax])grid onxlabel('p','FontName','Times New Roman','fontsize',fontt)h=ylabel('C','FontName','Times New Roman','fontsize',fontt)set(h,'rotation',0)2、运行结果3、结果分析在运行结果图上取特殊点分析:(1)当P=0时,信道的输入符号与输出符号是一一对应的关系,此时信道容量达到最大值;(2)当P=0.5时,信道的不确定性最大,这种情况下,信道容量为0,是最差的信道;(3)当P=1时,这是一种强噪信道,也就是确定信道,此时确定了输出那么输入便随之确定了,所以此时信道容量也达到了最大值。
北京邮电大学信息论实验2
![北京邮电大学信息论实验2](https://img.taocdn.com/s3/m/f6414c1f4431b90d6c85c76f.png)
|������������ − ������������������������ | < ������������������
i=1
式中,p 为第 n 步转移之后的分布概率,mem为存储的 n-1 步的分布概率,CTL 为控制 阈值,可取 0.0000001。
实验结论:
在运行程序之后,我总结了以下表: 起始分布概率 [1,0,0,0] [1/2,1/2,0,0] [1/3,1/3,1/3,0] [1/4,1/4,1/4,1/4] 进入平稳之前的转移步数 57 53 52 15
北京邮电大学信息与通信工程学院
信息论实验
信息论实验· 第二次实验报告
题目一: 实验步骤: (程序见附件)
我首先计算该马氏源的平稳分布,求得分布概率π为(5/14,1/7,1/7,5/14) ,然后随机设 定一个初始概率, 重复迭代计算下一步转移之后的分布概率, 直到本步分布概率与上一步分 布概率之差的绝对值小于控制阈值 CTL,即可跳出循环,返回迭代步数。 判别公式:
由此看来,这三年的粮食收成尚可,欠收的概率较小,收成有波动。 使用一阶马氏链预测的长期粮食收成情况: 丰收 0.3655 平收 0.3529 欠收 0.2816
通过长期预测,我们可以认为:该地区适合做粮食产业,因为丰收+平收的概率已经超 过 70%,未来的收益基本有保障。 使用二阶马氏链预测的长期粮食收成情况:
������������ −1 ∗ ������ = ������������ −1
最后分别求得两个马氏源的平稳分布(出预测。方法是迭代计算,然后将相邻两步的概率差值与控制阈值比较,当小 于控制阈值,跳出迭代。
实验结论:
求得的一步转移概率矩阵: 0.2000 0.4667 0.3333 P = 0.5385 0.1538 0.3077 0.3636 0.4545 0.1818 二步转移概率矩阵: 0.4125 0.3166 0.2709 ������2 = 0.3024 0.4148 0.2828 0.3836 0.3223 0.2941 对于未来三年的粮食收成概率预测: 年份 1 2 3 丰收 0.5385 0.3024 0.3867 平收 0.1538 0.4148 0.3335 欠收 0.3077 0.2828 0.2799
信息论与编码实验二
![信息论与编码实验二](https://img.taocdn.com/s3/m/ea5d283ab5daa58da0116c175f0e7cd1842518c2.png)
信息论与编码上机报告
完成时间: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。
信息论实验报告2信源编码
![信息论实验报告2信源编码](https://img.taocdn.com/s3/m/a5e0382c376baf1ffc4fad44.png)
function [W,L,q]=shannon(p)
if (length(find(p<=0)) ~=0)
error('Not a prob.vector,negative component'); end
if (abs(sum(p)-1)>10e-10)
error('Not a prob.vector,component do not add up to 1'); end
n=length(P); %计算输入元素个数
p=P; mark=zeros(n-1,n);
% mark为n-1行、n列矩阵,用来记录每行最小两概率叠加后概率排列次序
% 1)确定概率大小值的排列,得到mark矩阵。
for i=1:n-1
[p,num]=sort(p); mark(i,:)=[num(1:n-i+1),zeros(1,i-1)];
s2='Shannon编码平均码字长度L:'; s3='Shannon编码的编码效率q:';
disp(s0);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q);
function H=entropy(P,r)
if (length(find(P<=0))~=0) %判断是否符合概率分布条件
[c,k]=min(temp);
if (current_index<=k)
next_index=current_index; code_num=48;
next_P=current_P(1:k);
else
信息论实验
![信息论实验](https://img.taocdn.com/s3/m/2e6b5f1f5f0e7cd184253687.png)
北京科技大学UNIVERSITY OF SCIENCE AND TECHNOLOGY BEIJING 信息论实验报告学院:计算机与通信工程学院一1.实验目的(1)进一步熟悉唯一可译码判决准则(2)掌握C语言字符串处理程序的设计和调试技术2.实验要求(1)已知:信源符号个数q、码字集合C(2)输入:任意的一个码。
码字个数和每个具体的码字在运行时从键盘输入(3)输出:判决(是唯一可译码/不是唯一可译码)3.实验代码#include<stdio.h>#include<string.h>#define MAX 100char c[MAX][MAX];char f[MAX][MAX];int N,sum=0;int flag;void patterson(char c[],char d[]){int i,j,k;for(i=0;;i++){if(c[i]=='\0'&&d[i]=='\0') //2字符串一样,就跳出break;if(c[i]=='\0') //若d比c长,将d的尾随后缀放入f中{for(j=i;d[j]!='\0';j++) f[sum][j-i]=d[j];f[sum][j-i]='\0';for(k=0;k<sum;k++){if(strcmp(f[sum],f[k])==0) /*看当前生成的尾随后缀在f集合中是否存在*/ {sum--;break;}}sum++;break;}if(d[i]=='\0') //c比d长,将c的尾随后缀放入f中{for(j=i;c[j]!='\0';j++) f[sum][j-i]=c[j];f[sum][j-i]='\0';for(k=0;k<sum;k++){if(strcmp(f[sum],f[k])==0) /*查看当前生成的尾随后缀在f集合中是否存在*/{sum--;break;}}sum++;break;}if(c[i]!=d[i])//字符不一样了也退出break;}}/*主函数*/main(){int i,j;printf("输入码字的个数:");scanf("%d",&N);while(N>100){printf("输入码字个数过大,请输入小于100的数\n");printf("请输入码字的个数:");scanf("%d",&N);}flag=0;printf("请分别输入码字,长度<100个字符):\n");for(i=0;i<N;i++){scanf("%s",&c[i]);}for(i=0;i<N-1;i++)//判断如果码本身是否重复for(j=i+1;j<N;j++){if(strcmp(c[i],c[j])==0){flag=1;break;}}if(flag==1)//如果码本身有重复,就可以断定它不是唯一可译码{printf("这不是唯一可译码。
信息论实验二报告
![信息论实验二报告](https://img.taocdn.com/s3/m/f30a38cc08a1284ac85043ec.png)
新课改下中学体育教学的问题与对策分析摘要:在当前的教育发展中,中学阶段的体育教学是不容忽视的重要内容,同时也是整个教育体系中的重要组成部分。
中学生的身体发展速度较快,在这一过程中对学生的身体素质进行培养是非常重要的。
从当前的中学体育教学情况来看,开展体育教学之后,能够有效的实现学生身体素质的培养和身体技能的提升。
关键词:新课改;中学体育;问题及对策引言:在当前新课改发展的背景下,老师需要正确的看待高中体育教学问题的开展,要结合学校相关领导人针对当前教学中存在的问题进行分析,要建立完善的科学评价体系和评价模式。
正凸显教学改革和发展的真实性与创新性。
一、中学体育教学的重要性国家相关体育教育部门在发展过程中多次强调中学生的身体训练问题,从国家体育教育部门的发展角度来看,开展中学生的体育教学工作之后,能够真正提高整体的教学质量和教学效果,而且能够为学生身体素质的提升起到一定的推动作用。
在当前的新课改发展背景下,老师的教育观念和具体的教学内容是非常重要的,体育老师在开展体育教学的过程中,能够真正遵循以德育人的教学原则了解学生的实际诉求,能够为后续的教育起到一定的推动力[1]。
了解学生素质发展和全面发展的基本内容,从根本上提高整体的教学效果。
开展高质量的体育教学工作之后,能够为学生综合能力的发展提供一定的技术保障。
从当前高中学生的情况来看,部分学生的身体素质相对较差,如果不及时对学生的身体机能进行培养,就会影响学生的身心健康发展。
学校通过开展高质量的体育教学活动之后,能够让学生在参与活动训练的过程中养成良好的习惯,这对学生的整体发展来说是非常有帮助的。
二、中学体育教学过程中存在的问题2.1.中学体育教学工作的重视度不足从当前高中学阶段的体育教学情况来看,部分学校在办学期间更加关注学生的应试发展,只关心学生的学科成绩,忽视了学生身体素质和体育课堂工作的开展。
但是由于部分学校对于体育教学缺乏一定的重视度,导致很多地区的体育教学工作开展非常困难。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验课程:信息论与编码理论专业:信息与计算科学班级:09070241
学号:0907024101
姓名:孙秋月
中北大学理学院
实验二 哈夫曼编码
一、实验目的
1. 掌握哈夫曼编码的原理及编码步骤
2. 练习matlab 中哈夫曼编码函数的调用及通信工具箱的使用
二、实验原理
哈夫曼编码的具体步骤归纳如下:
1. 统计n 个信源消息符号,得到n 个不同概率的信息符号。
2. 将这n 个信源信息符号按其概率大小依次排序:
p (x 1) ≥ p (x 2)≥ …≥ p (x n )
3. 取两个概率最小的信息符号分别配以0和1两个码元,并将这两个概率相加作为一个新的信息符号的概率,和未分配的信息符号构成新的信息符号序列。
4. 将剩余的信息符号,按概率大小重新进行排序。
5. 重复步骤3,将排序后的最后两个小概论相加,相加和与其他概率再排序。
6. 如此反复重复n-2次,最后只剩下两个概率。
7. 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字,构成霍夫曼编码字。
编码结束。
三、实验内容
为某一信源进行哈夫曼编码。
该信源的字符集为X={x 1, x 2, … x 6 },相应的概率矢量为:P =(0.30,0.25,0.21,0.10,0.09,0.05),即X ,P 的概率空间为:
123456 0.300.250.210.100.090.05X x x x x x x P ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦
根据哈夫曼编码算法对该信源进行哈夫曼编码。
并计算其平均码长和编码效率。
调用matlab 哈夫曼编码函数进行哈夫曼编码,与人工编码结果做比较。
1. huffmandict 函数: 为已知概率分布的信源模型生成哈夫曼编解码索引表。
调用方法如下:
[dict,avglen] = huffmandict (symbols, p)
[dict,avglen] = huffmandict (symbols, p, N)
[dict,avglen] = huffmandict (symbols, p, N, variance)
【实验方法和步骤】
symbols = [1:6];
p = [.30 .25 .21 .10 .09 .05];
[dict,avglen] = huffmandict(symbols,p)
samplecode1= dict{1,2}
samplecode2= dict{2,2}
samplecode3= dict{3,2}
samplecode4= dict{4,2}
samplecode5= dict{5,2}
samplecode6= dict{6,2}
h=-0.30.*log2(0.30)-0.25.*log2(0.25)-0.21.*log2(0.21)-0.10.*log2(0.10)-0.09. *log2(0.09)-0.05.*log2(0.05)
n=h./avglen
【运行结果】
dict =
[1] [1x2 double]
[2] [1x2 double]
[3] [1x2 double]
[4] [1x3 double]
[5] [1x4 double]
[6] [1x4 double]
avglen =
2.3800
samplecode1 =
0 0
samplecode2 =
0 1 samplecode3 =
1 1 samplecode4 =
1 0 1 samplecode5 =
1 0 0 0 samplecode6 =
1 0 0 1
h =
2.3549
n =
0.9894。