(7,4)线性分组码的M语言课程设计20145856龚利明.doc_第1页
(7,4)线性分组码的M语言课程设计20145856龚利明.doc_第2页
(7,4)线性分组码的M语言课程设计20145856龚利明.doc_第3页
(7,4)线性分组码的M语言课程设计20145856龚利明.doc_第4页
(7,4)线性分组码的M语言课程设计20145856龚利明.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信原理课程设计与实践题目:线性分组码编码与译码仿真设计 基于M语言汉明码的译码 学 院: 计算机与通信工程 专 业: 通信工程 姓 名: 龚利明 学 号: 20145826 指导老师: 宫铭举 童峥嵘 2016年12月摘 要 当代社会,线性分组码是差错控制编码的重要一种,在本次课程设计中,我们采用MATLAB对线性分组码(7,4)码进行编码与译码的仿真设计。当接收到的六位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。为了实现通信,在信号传输过程中,往往由于信道传输特性不理想以及加性噪声的影响,传输的信息中不可避免地会发生错误,影响通信系统的传输可靠性。随着数字通信技术的发展,各种业务对系统误码率的要求也逐渐提高,采用差错控制编码技术是提高数字通信可靠性的有效方法之一。差错控制编码就是在发送端的信息码无序列中,以某种确定的编码规则加入一些监督码元,使信息码元与监督码元之间具有某种相关性。接收端通过检验这种相关性是否存在来判断在传输过程中是否出现了误码。关键词:线性分组码,汉明码,译码 目 录第一章 绪论11.1线性分组码的意义11.2汉明码的简单介绍11.3 对MATLAB的介绍2第二章 线性分组码的结构与设计32.1线性分组码的原理解析32.1.1线性分组码的原理介绍32.1.2线性分组码的译码设计原理52.2线性分组码的逻辑设计52.2.1 程序设计译码逻辑图52.2.2对于编码的简单概述9第三章 线性分组码系统调试103.1编译码调试103.2仿真输出结果12第四章 总结与展望144.1总结问题144.2展望未来14参考文献15附 录16附录1 程序代码16致 谢19天津理工大学2014级通信原理课程设计与实践第1章 绪论1.1线性分组码的意义 在本次课设通过对线性分组码中的(7,4)码编译过程的编程实现,了解到线性分组码的构成方式是把信息序列分成每k个码元一段,并由这k个码元按一定规则产生r 个校验位,组成长度为n=k+r的码字,用(n,k)表示。信息码元与校验位之间为线性关系。并且知道了线性分组码中的(7,4)码的编码过程信息码元与校验位之间的线性关系实现起来是时分简单的.分组码是一组固定长度的码组(n , k),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-k个监督位的作用就是实现检错与纠错。对于长度为n的二进制线性分组码,它有种可能的码组,从种码组中,可以选择M=个码组(kn)组成一种码。这样,一个k比特信息的线性分组码可以映射到一个长度为n码组上,该码组是从M个码组构成的码集中选出来的,这样剩下的码组就可以对这个分组码进行检错或纠错。本文使用的是功能强大的C语言软件。 1.2汉明码的简单介绍汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为海明码。当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错。与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。在接受端通过纠错译码自动纠正传输中的差错来码纠错功能,称为前向纠错FEC。 在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。但这种方法比简单重传协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。进行奇偶校验的方法是先计算数据中1的个数,通过增加一个0或1(称为校验位),使1的个数变为奇数(奇校验)或偶数(偶校验)。例如,数据1001总共是4个比特位,包括2个1,1的数目是偶数,因此,如果是偶校验,那么增加的校验位就是一个0,反之,增加一个1作为校验位。通过“异或”运算来实现偶校验,“同或”运算来实现奇校验。单个比特位的错误可以通过计算1的数目是否正确来检测出来,如果1的数目错误,说明有一个比特位出错,这表示数据在传输过程中受到噪音影响而出错。利用更多的校验位,汉明码可以检测两位码错,每一位的检错都通过数据中不同的位组合来计算出来。校验位的数目与传输数据的总位数有关,可以通过汉明规则进行计算:d+p+1=2的p次方d表示传输数据位数目,p表示校验位数目。两部分合称汉明码字,通过将数据位与一个生成矩阵相乘,可以生成汉明码字。分迅速,很多电子产品已经渐的融入了我生活,电子抢1.3对Matlab的介绍 MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C+和FORTRAN)编写的程序。 MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。 MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学 运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C+ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学 运算、多维数组操作以及建模动态仿真等。 M语言,编程语言,是微软新Oslo发展和面向服务策略的一部分。一种演算纸方式的编程语言。通过这种语言,用户可以用类似于数学公式的方式来编写算法,大大降低了编程所需的难度并节省了时间,从而让用户把主要的精力集中在算法的构思而不是编程上。在一个软件为中心的世界里,我们已经有了太多太多的计算机语言用以编程从脚本语言到字节码编译语言,再到最高级的架构语言和嵌入式语言。而现在,微软正打算开发另外一种编程语言,代号为“M”(代表Microsoft)。这种新编程语言是微软新Oslo发展和面向服务策略的一部分,在保持文本(textual)和特定领域(domaiN-specific)的同时,还整合了来自XAML的特性。与Visual Studio 2010一起,M将与其他两个即将一同发布的组件被直接应用:这两个组件其中一个是QuadraNt,它是一个可视化构建模型的工具;而另外一个组件是在SQL数据库中用于存储和浏览模型的存储器。第二章 线性分组码的结构与设计2.1线性分组码的原理解析2.1.1线性分组码的原理介绍一,监督位线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若监督码元是按线性关系模2相加而得到的,则称其为线性分组码。一般来说,若汉明码长为n,信息位数为k,则监督位数.若希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求 或 (2.1)现在以(7,4)分组码为例来说明线性分组码的特点。设其码长为7,前4位是信息位,后3位是监督位,可用下列线性方程组来描述该分组码产生监督位:(2.2)二,监督矩阵式(2.2)所示的(7,4)汉明码的监督方程可以改写为:(2.3)式(2.3)可以表示成如下矩阵(2.4)式(2.4)还可以简记为 或 (2.5)其中;。右上标“T”表示将矩阵转置。例如,是的转置,即的第一行为的第一列,的第二行为的第二列等等。我们将称为监督矩阵。只要只要监督矩阵H给定,编码时信息位和监督位的关系也就随即确定下来了。三,生成矩阵公式(2.2)也可改写成(2.6)或者(2.7)式(2.7)中,为一个阶矩阵,它为的转置,即(2.8)式(2.8)表示,在信息位给定后,用信息位的行矩阵乘矩阵就产生出监督位。我们将的左边加上一个阶单位方阵,就构成一个矩阵(2.9)称为生成矩阵,因为由它可以产生整个码组(2.10)因此,如果找到了码的生成矩阵,则编码的方法就完全确定了。具有形式的生成矩阵称为典型生成矩阵。由典型生成矩阵的出的码组中,信息位的位置不变,监督位附加于其后。这种形式的码称为系统码。四,校验子送码组,在传输过程中可能由于干扰引入差错,故接收码组与不一定相同。(2.11)则错码行矩阵 (2.12)2.1.2线性分组码的译码设计原理 一,线性码的纠检错能力:对于任一个(n,k)线性分组码,若要在码字内(1) 检测出e个错误,则要求码的最小距离de+1; (2) 纠正t个错误,则要求码的最小距离d2t+1; (3) 纠正t个错误同时检测e(t)个错误,则要求dt+e+1。二,假设接收端收到的码字为R,那么它和原来发送端发送的码字A之间就有可能存在着误差。即在码组A=a5 a4 a3 a2 a1 a0中的任意一位就有可能出错。这样我们在接收端接收到一个码组是就有可能判断错发送端原来应该要表达的意思。为了描述数据在传输信道中出现错误的情况,引入了错误图样E,在错误图样中,0代表对应位没有传错,1代表传输错误。实际上错误图样E就是收序列与发送序列的差。所以在译码中用接收到的码字B模尔加错误图样E就可以得到发送端的正确码字A。因此译码的过程就是要找到错误图样E。三,定义:伴随式S,S = R *TH= ( A + E ) * T,H= A *TH+ E *T,H= E * T,H(3-10)因为A是编得的正确码字。根据前面所叙述,它和监督矩阵的转置相乘为0。显然,S仅与错误图样有关,它们之间是一一对应的关系。找到了伴随式S,也就可以找到E。而与发送的码字无关。若E=0,则S=0;因此根据S是否为0可进行码字的检错。2.2线性分组码的的逻辑设计2.2.1 程序设计译码逻辑图 逻辑图分为编码和译码部分,在小组中我做的是译码部分所以在图2.1先行介绍的是译码部分。再进行编码部分。如图2.2是线性分组码译码的逻辑设计图:译码输入七位码开始根据输入求出校验子校正子S=0?N根据S与E的关系纠正错码 Y输出四位信息码结束 图2.1译码逻辑设计图(7,4)汉明码的译码器的功能就是把输入的7 位汉明码B= 译为 等4位信息码,并且根据伴随矩阵S 从而纠正编码中可能出现的1 位错码。最后结束译码部分。通过输入s和e之间的关系就能够纠正错码,但是这个汉明码只能够最多检测出两个错码并且只能够纠正一位错码。表2-2是(7,4)汉明码译码输入、输出对应关系表: 表2-1 (7,4)汉明码译码输入输出对应关系序号译码输入 输出校正子错误码率错码位置C00000010000001021000111100011003200101010010000无错0300111100011000无错0401011100100011450100101010101146001001101101006701110000111000无错0810001111000000无错09100110110010011101010000101001021110111011011100312110101111000114131111000110110151410101001110110615011111111111117表2-2是汉明码的全部码组:表2-2 汉明码的全部码组信息位监督位信息位监督位0000000100011100010111001100001010110100100011110101100101001101100001010110111010100110011111010001110001111111由表2-3可知:(7,4)汉明码的最小码距=3,它能纠1位错或检2位错。由此可见,汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距=3,码长n与监督位r满足关系式。说明上述所说的(7,4)线性分组码就是汉明码。汉明码是一个高效码。如表2-3所示的是校正子和错误图样之间的关系: 表2-3校正子和错误图样之间的关系表错误码位错码行矩阵校正子错误位置0000001001第一位0000010010第二位0000100100第三位0001000011第四位0010000101第五位0100000110第六位1000000111第七位无错0000000000无由上表2-4可知:当S=001时,则出错在1 位,即b0 出错;当S=010时,则出错在2 位,即b1 出错;当S=100时,则出错在3 位,即b2 出错。当S=011时,则出错在4 位,即b3 出错;当S=101时,则出错在5 位,即b4 出错;当S=110时,则出错在6 位,即b5 出错;当S=111时,则出错在7 位,即b6 出错;当S=000时,则无错。2.2.2对于编码的简单概述 汉明码的编码就是将输入的四位信息码M加上三位监督码编成七位汉明码编码输出B= 。由A=MG=G可知,信息码M与G的乘积就是编好的(7,4)汉明码。如图2.2所示是编码的设计流程图:结束输出(7,4)汉明码输入信息位输入生成矩阵开始 图2.2 编码流程图 根据(7,4)汉明码的编码原理,将上式计算所得的监督位和输入的信息位一起输出,则此次编码就算完成了。 第三章 线性分组码的系统调试 3.1编译码调试1编码部分:为译码成功打下坚实的基础。如图3.1所示是编码部分: 图3.1 编码部分 图3.1表示的是编码部分,开始先输入生成矩阵,接着利用公式求出监督矩阵,然后输出监督矩阵,然后输入I,同样利用公式求出汉明码的许用码组矩阵,最后输出许用码组。2.译码部分: 1.如图3.2所示的是求出伴随式S中的代码图3.2 求出伴随式S 图3.2表示的是译码部分,首先输入生成矩阵,再输入接收的码组,接着通过输入的接收码组再对a和b进行赋值,接着输入错误码组,然后同样利用公式求出监督码组和伴随式S,再者输出伴随式。 2.图3.3是接着图3.2的部分:图3.3求S与E的和 图3.3为对i=1进行赋值,然后进行for循环通过s利用公式求出M的值,再通过for循环,利用switch语句求出正确值A。 3.图3.4是接着图3.3的延伸:图3.4 显示第几位出错图3.4显示的是通过for循环,再通过M的值与错码的对应关系,求出对应的错码在第几位。 4.同理,图3.5是基于图3.4的延伸图3.5输出正确码组图3.5译码4表示的是:首先,对A取余数,再利用while分别进行三次的循环输出I。3.2 仿真输出结果1.接下来就是仿真:接收码组1. 图3.5输入错误接收码组图3.5表示的是输入接收码组为3行7列的码组,并且分别在a0,a1,a2上分别产生错码,所以反正结果为提示第1,2,3位是错误,最后输出纠正后的码组和信息码组I。2.接收码组2: 图3.6输入正确接收码组 图3.6输入码组2显示的是输入接收码组2,我选择的是没有出现错误。 第四章 总结与展望4.1总结 对于本次课程设计的结束,我真切感觉到自己知识能力的匮乏,很多东西都只是知道一些浅显的知识,真正搞懂会应用的东西很少。或许一个人的进步需要一个缓慢的过程。在过程中需要不断地借鉴,学习,汲取别人的东西。同别人的成果中攫取知识和营养,然后它变成自己的东西。通过这次课程设计。我学到了很多东西,首先,通过这次课程设计,我熟练地掌握了汉明码的纠错码的原理,了解的(7,4)汉明码的相关知识。其次,我觉得学习理论和实践是两个层次,理论指导实践,而实践验证理论,理论往往是在理想的条件下得出的,而实践是在现实生活中进行的,所以,实践得出的结论往往与理论的结论有一定的差别,这是很正常的。另外团结协作,互助共赢是时代的主流。在这次课设的制作中,交流合作的精神在我们体现的可谓是淋漓尽致。相互探讨,学习交流,优势互补,这样才最终处成了这课设。争论与交流是解决问题很好的方法,问题也总是在思想与意见的碰撞中得到解决而这也是我们对理论理解的更为深刻。通过图书馆,搜索引擎查阅资料的能力也得到了相应的提升。总之,在这次课程设计的制作的过程中学到了很多东西,能力也有相应的提升。在此还要感谢指导老师的辛勤教导,感谢老师在此次课程设计中给以孜孜不倦的解惑。4.2展望 课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。本次课设通过对线性分组码中的(7,4)码编译过程的编程实现,了解到线性分组码的构成方式是把信息序列分成每k个码元一段,并由这k个码元按一定规则产生r 个校验位,组成长度为n=k+r的码字,用(n,k)表示。信息码元与校验位之间为线性关系。并且知道了线性分组码中的(7,4)码的编码过程信息码元与校验位之间的线性关系实现起来是相对简单的。线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流的差错控制编码技术之一。 参考文献1 樊昌信 通信原理 北京:国防工业出版社,2002 2 刘敏 MATLAB 通信仿真与应用 国防工业出版社,20063 王彦朋. 大学生电子设计与应用.北京:中国电力出版社,20124 吴伟陵等著 移动通信原理 北京:电子工业出版社,2005 5 赵静 基于MATLAB的通信系统仿真 北京:北京航空航天大学出版社,20136葛哲学 精通MATLAB 北京:电子工业出版社,2008年7徐东艳 孟晓刚编. MATLAB函数库查询词典. 中国铁道出版社. 2006 8吴玲达 杨冰等编. 计算机通信原理与技术. 国防科技大学出版社. 2003附 录附录1 程序代码clear all close all G=1 0 0 0 1 1 1; 0 1 0 0 1 1 0; 0 0 1 0 1 0 1; 0 0 0 1 0 1 1; H=gen2par(G); disp(监督矩阵为:H=);disp(H);I=0 0 0 0;0 0 0 1; 0 0 1 0;0 0 1 1; 0 1 0 0;0 1 0 1; 0 1 1 0;0 1 1 1; 1 0 0 0;1 0 0 1; 1 0 1 0;1 0 1 1; 1 1 0 0;1 1 0 1; 1 1 1 0;1 1 1 1; C=rem(I*G,2); disp(所得汉明码组结果为:C=); disp(C);clear all; close all; G=1 0 0 0 1 1 1; 0 1 0 0 1 1 0; 0 0 1 0 1 0 1; 0 0 0 1 0 1 1; R=input(请输入接收到的码组R:); a,b=size(R); E=0 0 0 0 0 0 0;1 0 0 0 0 0 0; 0 1 0 0 0 0 0;0 0 1 0 0 0 0; 0 0 0 1 0 0 0;0 0 0 0 1 0 0; 0 0 0 0 0 1 0;0 0 0 0 0 0 1; H=gen2par(G)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论