线性分组码

上传人:494895****12427 文档编号:63742553 上传时间:2022-03-20 格式:DOCX 页数:29 大小:62.10KB
收藏 版权申诉 举报 下载
线性分组码_第1页
第1页 / 共29页
线性分组码_第2页
第2页 / 共29页
线性分组码_第3页
第3页 / 共29页
资源描述:

《线性分组码》由会员分享,可在线阅读,更多相关《线性分组码(29页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上*实践教学*兰州理工大学计算机与通信学院计算机通信 课程设计题 目: 线性分组码(9,4)码的编译码仿真设计专业班级: 姓 名: 学 号: 指导教师: 成 绩: 专心-专注-专业目录前言计算机通信是一种以数据通信形式出现,在计算机与计算机之间,计算机与终端设备之间进行信息传递的方式。它是现代计算机技术与通信技术相结合的产物,在军队指挥自动化系统、武器控制系统、信息处理系统、决策分析系统、情报检索系统以及办公自动化系统等领域得到了广泛应用。按通信覆盖地域的广度,计算机通信通常分为局域网、城域网、广域网三类。在通常情况下,计算机通信都是由多台计算机通过通信线路连接成计算机

2、通信网进行的,这样可共享网络资源,充分发挥计算机系统的效能。近年来,随着计算机、卫星通信及高速数据网的飞速发展,数据的交换、数据的交换理和存储技术得到了广泛的应用,人们对数据传输和存储系统的可靠性提出了越来越高的要求。因此,如何控制差错、提高数据传输和存储的可靠性,成为现代数字通信系统设计的重要课题 。目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。而线性分组码具有编译码简单,封闭性好等特点,通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-k个监督位的作用就是实现检错与纠错。这种码的编码效率比较高,因此得到了广

3、泛的应用。本课程设计主要是采用Matlab仿真实现线性分组码的编译码。在加深理论知识的基础上,对Matlab仿真也有进一步的理解。 第一章 线性分组码原理1.1 差错控制概述数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏,接收端收到后可能发生错误判决,由乘性干扰引起的码间串扰,一般采用均衡的办法纠正。加性干扰的影响一般从合理选择调制制度解调方法以及发送功率等方面考虑,使加性干扰不足以影响达到误码率要求。在仍不能满足要求时,为减少错误、提高通信质量还采用检错、纠错技术,即差错控制措施。差错控制的主要方法是将数据以某种形式编码。差错控制的核心为:抗干扰编码,简称差错控制编码。差错控制编码

4、分为检错码、纠错码两大类。它在码元间建立了某种数学约束关系,并且对特定的信道总存在某种纠错编码信号以实现最小的能量或最小的带宽或最小的时间代价获得最小的数据传输差错。对于不同信道,采用不同类型的差错控制技术。差错控制技术主要有:1) 检错重发:在发送码元序列中加入差错控制码元,接收端利用这些码元检测到有错码时,利用反向信道通知发送端,要求发送端重发,知道正确接收为止。2) 前向纠错:前向纠错是利用接收端在发送码元序列中加入的差错控制码元,不但能够发现错码,还能够将错码恢复其正确值。3) 反馈校验:不需要在发送序列中加入差错控制码元,接收端接收到的码元原封不动的转发会发送端。在发送端将他和原发送

5、码元逐一比较,若发现有不同,就认为接收端接受的序列有错码,发送端立即从发。4) 检错删除:在接收端发现错码后,立即将其删除,不要求重发。这种方法只适合在少数特定系统中,在那里发送码元有大量的多余度,删除部分接收码元不影响应用。1.2 差错控制原理将信息码分组,并为每个信息组附加若干监督的编码,称为“分组码”。在分组码中,监督码元仅监督本组码中的信息码元。分组码一般用符号(n)、(k)表示,其中k是每组码二进制信息码元的数目。n是码组的总位数,又称为码组的长度。r=n-k为每个码组中的监督码元数目,或称监督位数目。k位二进制数构成的码组集合为种不同的码组,若组都为有用码组,其中任意码组出现错误都

6、将变成另一码组,则接收端无法检测识别哪一组出错。若只取部分码组为有用码组,则在传输过程中如接收端接收到的码组为非许用码组即禁用码组时,则可知传输错误。以3位二进制数构成的码组为例,它共有8种不同的可能组合,若将其全部用来表示天气,则可以表示8种不同天气,例如:000晴、001云、010阴、011雨、100雪、101霜、110雾、111雹。其中任一码组在传输中若发生一个或多个错误,则将变成另一个信息码组。这时接收端无法发现错误。若在上述8种码组中秩序使用4种来传达天气,例如:000晴、011云、101阴、110雨。这时,虽然只能传达4种不同的天气,但是接收端却可能发现码组中的一个错码。如000错

7、码一位,则接受码组将变成100或010或011.这三种码组都为禁用码组,故接收端认为接收码错误。要想能够纠正错误,需增加冗余度。1.3 线性分组码概念在计算机系统中,信息均按字节或字组成,故一般采用分组码。对信源输出的序列,若按每组长k位进行分组,则在二进制情况下共有个不同的组合,若按某一种规则,将每一组k位增加r位校验位(r=n-k,n是含有码元的个数)。使之成为具有一定纠错或检错能力的码字,则在个码字集合构成分组码。分组码的规律性是局限在一个码组之内的,如果这种规律性是以一线性方程组来表示的,则这种分组码就叫做线性分组码。1.4 线性分组码的基本原理分组码是一组固定长度的码组,一般可用符号

8、(n,k)表示,其中k是每组的信息元数目,n是码组的总位数,又称为码组的长度(码长)。r=n-k 为码组的监督元数目。长为n的所有二进制组(或称n重)共有个,但长为k的信息组只有个,因此分组码实际上就是以一定的规则从个n重中挑选出个n重,使个信息组与个n重之间建立一一对应关系,这个n重组成了一个(n,k)分组码。通常称这个n重为许用码组,简称码组,码矢或码字,而其余的-个n重为禁用码组。在(n,k)线性分组码中,常用编码效率R衡量码的有效性,它定义为信息位在码字中所占的比重:R=k/n。 R越大,表明码的冗余度越小。第二章 线性分组码的编码2.1 生成矩阵性分组码(n,k)中许用码字(组)为个

9、。定义线性分组码的加法为模二加法,乘法为二进制乘法。即1+1=0、1+0=1、0+1=1、0+0=0;11=1、10=0、00=0、01=0。且码字与码字的运算在各个相应比特位上符合上述二进制加法运算规则。线性分组码具有如下性质(n,k)的性质:1、封闭性。任意两个码组的和还是许用的码组。2、码的最小距离等于非零码的最小码重。对于码组长度为n、信息码元为k位、监督码元为rnk位的分组码,常记作(n,k)码,如果满足2r1n,则有可能构造出纠正一位或一位以上错误的线性码。下面我们通过(9,4)分组码的例子来说明如何具体构造这种线性码。设分组码(n,k)中,k = 4,为能纠正一位误码,要求r5。

10、现取r5,则nkr9。该例子中,信息组为(),码字为().当已知信息组时,按以下规则得到五个校验元,即 (2.1)(9,4)线性分组码有个许用码字或合法码字,另有-个禁用码字。发送方发送的是许用码字,若接收方收到的是禁用码字,则说明传输中发生了错误。为了深化对线性分组码的理论分析,可将其与线性空间联系起来。由于每个码字都是一个二进制的n重,及二进制n维线性空间Vn中的一个矢量,因此码字又称为码矢。线性分组码的一个重要参数是码率r=k/n,它说明在一个码字中信息位所占的比重,r越大,说明信息位所占比重越大,码的传输信息的有效性越高。由于(n,k)线性分组,线性分组码的2个码字组成了n维线性空间V

11、n的一个K维子空间。因此这个码字完全可由k个线性无关的矢量所组成。 设此k个矢量为, ,有生成矩阵形式为 (2.2)(n,k)码字中的任一码字,均可由这组基底的线性组合生成,即=G (2.3)式中,是k个信息元组成的信息组。写出线性分组码(9,4)码的所有信息组,由式(2.1)可得到生成的所有码字,如下表2-1所示:信息组码字信息组码字0000100000011001001010100011101101001100010111010110111001111111表2-1线性分组码(9,4)码对于表2-1给出的线性分组码(9,4)码,可将写成矩阵形式= (2.4)故(9,4)码的生成矩阵为 (2

12、.5)可以看到,从(9,4)码的16个码字中,挑选出k=4个线性无关的码字()(),(),()作为码的一组基底,用C=mG计算得码字。一个系统码的生成矩阵G,其左边k行k列应是一个k阶单位方阵,因此生成矩阵G表示为 G= P (2.6)式中,P是一个k(n-k)阶矩阵。2.2 校验矩阵表2-1所示的(9,4)线性分组码的四个校验元由式(2.1)所示的线性方程组决定的。把式(2.1)移相, (2.7)上式的矩阵形式为 =0 (2.8)这里的五行九列矩阵称为(9,4)码的一致校验矩阵,用H表示,即 (2.9) 由H矩阵得到(n,k)线性分组码的每一码字,(i=1,2),都必须满足由H矩阵各行所确定

13、的线性方程组,即=0。(9,4)码的生成矩阵G中每一行及其线性组合都是(n,k)码的码字,所以有G=0。由G和H构成的行生成的空间互为零空间,即G和H彼此正交。H=其右边r行r列组成一个单位方阵。 第三章 线性分组码的译码3.1 纠错码的介绍纠错码(error correcting code),在传输过程中发生错误后能在收端自行发现或纠正的码。仅用来发现错误的码一般常称为检错码。关系的建立称为编码。码字到达收端后,可以根据编码规则是否满足以判定有无错误。当不能满足时,按一定规则确定错误所在位置并予以纠正。纠错并恢复原码字的过程称为译码。检错码与其他手段结合使用,可以纠错。纠错编码又称信道编码,

14、信源编码是信息传输的两个方面。它们之存在对偶的关系。 准确地说,即把原码字按某种规则变成有一定剩余度的码字,并使每个码字的码元间有一定的关系。码元间的关系为线性时,称为线性码;否则称为非线性码。检错码与其他手段结合使用,可以纠错。3.2 纠错的原理纠错码能够检错或纠错,主要是靠码字之间有较大的差别。这可用码字之间的汉明距离 d(x,y)来衡量。它的定义为码字x与y之间的对应位取不同值的码元个数。一种纠错码的最小距离 d定义为该种码中任两个码字之间的距离的最小值。一种码要能发现e个错误,它的最小距离d应不小于e+1。若要能纠正t个错误,则d应不小于2t+1。在构造线性码时,数字上是从n维空间中选

15、一k维子空间,且使此子空间内各非零码字的重量尽可能大。若一种码的码长为n,码字数为M,或信息位为h,以及最小距离为d,则可把此码记作分组码。若此码为线性码,常简记作(n,k)码。常用R=M/n表示码的信息率,单位为比特/码元。R越大,则每个码元所携带的信息量越大,编码效率越高。纠错码实现中最复杂的部分是译码。它是纠错码能否应用的关键。采用的码长n越大,则误码率越小。但n越大,编译码设备也越复杂,且延迟也越大。人们希望找到的译码方法是:误码率随码长n的增加按指数规律下降;译码的复杂程度随码长n的增加接近线性地增加;译码的计算量则与码长 n基本无关。3.3 线性分组码译码原理两个码字之间,对应位取

16、之不同的个数,称为汉明距离,用d表示。一个码的最小距离定义为=mind(,),ij, ,(n,k),两个码字之间的距离表示了它们之间差别的大小。距离越大,两个码字的差别越大,则传送时从一个码字错成另一码字的可能性越小。码的最小距离愈大,其抗干扰能力愈强。对于任一个(n,k)线性分组码,若要在码字内检测出e个错误,则要求码的最小距离de+1; 纠正t个错误,则要求码的最小距离d2t+1;(3)纠正t个错误同时检测e(t)个错误,则要求 dt+e+1。假设接收端收到的码字为B,那么它和原来发送端发送的码字A之间就有可能存在着误差。即在码组A= 中的任意一位就有可能出错。这样我们在接收端接收到一个码

17、组时就有可能判断错发送端原来应该要表达的意思。为了描述数据在传输信道中出现错误的情况,引入了错误图样E,在错误图样中,0代表对应位没有传错,1代表传输错误。实际上错误图样E就是收序列与发送序列的差。所以在译码中用接收到的码字B模二加错误图样E就可以得到发送端的正确码字A。因此译码的过程就是要找到错误图样E。因为A是编得的正确码字。根据前面所叙述,它和监督矩阵的转置相乘为0。显然,S仅与错误图样有关,它们之间是一一对应的关系。找到了校正子S,也就可以找到E。而与发送的码字无关。若E=0,则S=0;因此根据S是否为0可进行码字的检错。如果接收码字B中只有一位码元发生错误,又设错误在第i位。即=1,

18、其他的均为0。在后面的译码程序中,建立了一个校正子S与错误图样E对应的表。也就是收到一个B序列,就可以通过计算得到一个校正子,而每一个校正子都对应着一个错误图样E,再通过B模二加上E,就可以得到正确的码字A。因为在不同的错误序列B中,同一位码元错误时对应的E是一样的,所以可以利用这个正确的码字让它每位依次错误,来求得它的校正子。而这时的矩阵B就是错误图样E。在编程时本实验所采用的为(9,4)线性分组码,最小汉明距离为2,所以具有纠错1位检错两位的功能。第四章 推导过程4.1 编码过程监督矩阵H与生成矩阵G的关系:由H与G的分块表示的矩阵形式 H =P (4.1) G= Q (4.2) P= (

19、4.3)则有 G=0 (4.4)或 H=0 (4.5)已知给出的(9,4)码的Q矩阵 (4.6)则可以根据G= Q求出生成矩阵 (4.7)由 P=和 H =P 即可求出监督矩阵HH = (4.8)有了生成矩阵后则可以根据输入的四位信息位和生成矩阵相乘得到编码矩阵,即C=mG (4.9)4.2 译码过程对于译码过程,同样由上知道监督矩阵HH = (4.10)H矩阵与(n,k)码的任意一个许用码字相乘的结果必然为零,即若C=mG是任一(n,k)码字,则必有C=0。若不属于许用码字,或有传输差错,且差错位数在(n,k)码纠错能力内,则运算结果将为非0值,此时,可以纠错或检错重发。当编码矩阵与生成矩阵

20、的转置相乘时,若当其中的一位编码或两位出现差错时会有十种情况: = B = =00000 (4.11) = B = (4.12) = B = (4.13) = B = (4.14) . . . . . . = B = (4.15) = B = (4.16) = B =11111 (4.17)由以上各式,可得出译码时所有可能出现的校正子及错误图样,如下表(4-1)所示:校正子S错误图样E0000000001000100010001010100000111110110110111110011111表4-1(9,4)线性分组码的译码表而这些情况正好是和校验子有某种对应关系的,根据这些对应关系可以进行

21、相关编程。若编程检测到了哪一位错误,可以根据A=B +E (4.18)其中A 为纠错输出码序列,E为错码矩阵。对接收到的信息进行改正求出正确的编码,从而再提去更正后的接收序列的前三位来提取信息位,以至获得信息矩阵I。第五章 仿真结果分析5.1编码程序流程图 在前面章节,我们得到矩阵Q,Q为一个四行五列矩阵。由Q得到生成矩阵G,在得到监督矩阵H,从而得到所有可用的码组,即完成编码。(9,4)线性分组码的编码流程图如下图5-1所示:开始根据矩阵Q,得到生成矩阵G计算所有的可用码组完成根据生成矩阵G,得到监督矩阵H图 5-1 编码程序流程图5.2 译码程序流程图同样,我们根据上述章节得到监督矩阵H,

22、则将码字与监督矩阵的转秩相乘,得到伴随式S,检验出错误码的位置,并得到正确的码字及信息位,即(9,4)线性分组码的译码完成。译码流程图如下图5-2所示:开始得到监督矩阵H 将码字与监督矩阵的转秩相乘得到伴随式并纠错结束图5-2 译码流程图5.3 运行结果分析运行程序,因为矩阵Q在程序中已给出,则得出生成矩阵G和监督矩阵H,输入一组信息序列m,得到生成码字C。此过程完成程序的编码。同样,根据监督矩阵H,输入码字C,则C与H的转秩相乘得到伴随式S,并由程序得出出错位置及正确码字和信息位,从而完成校验过程,得到译码。运行结果如下图5-3 、5-4所示。 图 5-3 程序编码过程 图 5-4 程序校验

23、过程 致谢经过两个星期的课程设计,使我们加强了动手、思考和解决问题的能力。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。这次课程设计也让我体会到同学及老师间交流的重要性。只有彼此间认真交流、协作,才能让每个人的思维更加开阔,使每个人的设计更加完善。三人行,必有我师焉。交流也能让我们学到其他方面的东西,也能增加同学间以及师生间的距离。在我们师生认真努力下,此次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在同学的交流以及老师的辛勤

24、指导下,终于迎刃而解,同时也学到很多实用的知识,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变等都受益匪浅。在此,感谢老师的细心指导!参考文献1 樊昌新,曹丽娜通信原理国防工业出版社,20112 孙丽华编. 信息论与纠错编码. 电子工业出版社. 2005,33 郭文彬 桑林编. 通信原理-基于MATLAB的计算机仿真. 北京邮电大学出版社. 2006.24 王华 李有军编. MATLAB电子仿真与应用教程(第二版). 国防工业出版社. 2007.35 孙屹主编. MATLAB通信仿真开发手册. 国防工业出版社. 2005.16 吴玲达,李国辉,杨冰 等著. 计算机通信原理

25、与技术M. 国防科技大学出版社,2003,3.7 潘新民 著. 计算机通信技术M. 电子工业出版社,2003,7.8 孙丽华 著. 信息论与纠错编码M. 电子工业出版社,2005,39 Proakis 著,张力军 译. 数字通信(第四版)M. 电子工业出版社,2004,7.附录% - 初始化k,r,满足分配条件 -flag_in=1;%输入条件标记,若满足条件则跳出循环,否则就一直输入(默认不满足)while(flag_in) k=input(线性分组码信息码长度k=); r=input(线性分组码监督位长度r=); if(2r-1=k+r) flag_in=0; else disp(赋值错误

26、!须满足2k-1=k+r); endend% -% - 生成校正子,可选择自动生成或手动输入 -Q_yesOrNo=input(是否自动生成校正子?Y/N:,s);if(Q_yesOrNo=Y) %从数值不会重合的集合中选出校验子的十进制数 Q_randFull=randperm(2r-1); Q_randCheck=zeros(1,k); %初始化k行r列的矩阵Q Q=zeros(k,r); i=1;j=1; %选出可用的校验子(十进制) while(iC%02d,k+r-1:-1:0),8,k+r);disp(校正子与错码位置的对应关系);Q_char=Q_charC Q_charD% -

27、% - 线性分组码内部的函数关系及计算 -Ik=eye(k);%生成k*k的单位矩阵,与Q合成为生成矩阵GG=Ik Q;%生成矩阵P=Q;Ir=eye(r);%生成r*r的单位矩阵,与P合成为监督矩阵HH=P Ir;%监督矩阵% -% - 计算所有的可用码组 -valid_yesOrNo=input(是否要显示所有可用码组?Y/N:,s);if(valid_yesOrNo=Y) %初始化2k行k+r列,与1行k列的矩阵 valid_codes=zeros(2k,k+r); valid_buffer=zeros(1,k); %初始化每行码重数组 weight_array=zeros(1,2k);

28、 %遍历可用信息码并输出所有可用码组 for i=1:1:2k %将第i行的十进制数转制为4位二进制数(字符矩阵) valid_binary=dec2bin(i-1,k); for j=1:1:k %将字符转换为数值放入矩阵(行向量)中 valid_buffer(j)=str2double(valid_binary(j); end %将得出的第i行的行向量valid_codes,并得出当前信息码对应全长码字 valid_codes(i,:)=mod(valid_buffer*G,2); %求每行可用码字的码重 weight_array(i)=length(nonzeros(valid_code

29、s(i,:); end disp(最终可用码组:); valid_codes disp(最小码重:); min_weight=min(weight_array(2:2k) %count=1; for i=1:1:2k-1 for j=i+1:1:2k %两两的码距存入数组中 %distance_array(count)=length(nonzeros(valid_codes(i,:)-valid_codes(j,:); distance_array(i,j)=length(nonzeros(valid_codes(i,:)-valid_codes(j,:); %count=count+1; e

30、nd end %调整码距矩阵 disp(最小码距:); %min_distance=min(min(distance_array) distance_array(find(distance_array=0)=NaN; min(min(distance_array)end% -% - 输入或自动生成码字及校验码字的正确性 -check_yesOrNo=input(是否自动生成要校验的码字?Y/N:,s);if(check_yesOrNo=Y) disp(校验码字); check_code=randint(1,k+r,0 1)else %直接输入矩阵更好,但此处就当输入的字符 check_char

31、=input(sprintf(请输入要校验的码字(%d位): ,k+r),s); %初始化要校验的码字 check_code=zeros(1,k+r); for i=1:1:k+r %将字符阵转换为数值阵 check_code(i)=str2double(check_char(i); endenddisp(得出校验子为:);S=mod(H*check_code,2)%新建最终校验矩阵,检验错误码位置Q_final(1:k,:)=Q;Q_final(k+1:k+r,:)=Ir;flag=1;%校验标记,默认为1,检测不出,为2,无错,为0,有错码for i=1:1:k+r %判断两矩阵是否相同,是则返回1,否则返回0 if(isequal(S,Q_final(i,:) errors=sprintf(错码位置:C%d,原码应为:,k+r-i) flag=0; %纠错 modify_code=check_code; modify_code(i)=mod(check_code(i)+1,2); modify_code elseif(isequal(S,zeros(1,r) flag=2; endend%有两位及以上出错的码字,检测不出,或者无错if(flag=1) errors=sprintf(检测不出,冏.)elseif(flag=2) errors=sprintf(无错)end

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!