线性分组码的编码与译码_第1页
线性分组码的编码与译码_第2页
线性分组码的编码与译码_第3页
线性分组码的编码与译码_第4页
线性分组码的编码与译码_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、···················实践教学···················大学计算机与通信学院2014年秋季学期计算机通信课程设计 题 目: 线性分组码(9,4)码的编译码仿真设计 专业班级: 姓 名: 学 号

2、: 指导教师: 成 绩: 摘要该系统是(9,4)线性分组码的编码和译码的实现,它可以对输入的四位的信息码进行线性分组码编码,对于接收到的九位码字可以进行译码,从而译出四位信息码。当接收到的九位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。只有特定位有两位错误时,才能纠正两位错误。这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。关键词:编码; 译码; 纠错1目录摘要1目录21. 信道编码概述21.1信道模型21.2 抗干扰信道编码定理及逆定理31.3 检错与纠错的基本原理41.4 限失真编码定理52.

3、线性分组码的编码62.1 生成矩阵62.2 校验矩阵92.3 伴随式与译码103. 线性分组码编码的Matlab仿真123.1 程序流程图123.2 程序执行结果123.2 线性分组码译码的Matlab仿真133.3结果分析15参考文献16总结17致 谢18附录192前言由于计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象,人们对数据传输和存储系统的可靠性提出来了越来越高的要求,经过长时间的努力,通过编译码来控制差错、提高可靠性的方式在信道传输中

4、得到了大量的使用和发展,并形成了一门新的技术叫做纠错编码技术,纠错编码按其码字结构形式和对信息序列处理方式的不同分为两大类:分组码和卷积码。目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。对线性分组码的讨论都在有限域GF(2)上进行,域中元素为0,1,域中元素计算为模二加法和模二乘法。分组码是一组固定长度的码组,可表示为(n , k),通常它用于前向纠错。在分组码中,监督位被加到信息位之后,形成新的码。在编码时,k个信息位被编为n位码组长度,而n-

5、k个监督位的作用就是实现检错与纠错。对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中,可以选择M=2k个码组(k<n)组成一种码。这样,一个k比特信息的线性分组码可以映射到一个长度为n码组上,该码组是从M=2k个码组构成的码集中选出来的,这样剩下的码组就可以对这个分组码进行检错或纠错。251. 信道编码概述1.1信道模型信息必须首先转换成能在信道中传输或存储的信息后才能通过信道传送给收信者。在信息传输过程中,噪声或干扰主要是从信道引入的,它使信息通过信道传输后产生错误和失真。因此信道的输入和输出之间一般不是确定的函数关系,而是统计依赖的关系。只要知道信道的输入信号、输

6、出信号以及它们之间的统计依赖关系,就可以确定信道的全部特性。信道的种类很多,这里只研究无反馈、固定参数的单用户离散信道。1离散信道的数学模型离散信道的数学模型一般如图6.1所示。图中输入和输出信号用随机矢量表示,输入信号为X= (X1, X2, XN),输出信号为Y= (Y1, Y2, YN);每个随机变量Xi和Yi又分别取值于符号集A=a1, a2, , ar和B=b1, b2, , bs,其中r不一定等于s;条件概率P(y|x) 描述了输入信号和输出信号之间的统计依赖关系,反映了信道的统计特性。YX信道 图1.1 离散信道模型根据信道的统计特性即条件概率P(y|x) 的不同,离散信道可以分

7、为三种情况:(1)无干扰信道。信道中没有随机干扰或干扰很小,输出信号与输入信号之间有确定的一一对应的关系。(2)有干扰无记忆信道。实际信道中常有干扰,即输出符号与输入符号之间没有确定的对应关系。若信道任一时刻的输出符号只统计依赖于对应时刻的输入符号,而与非对应时刻的输入符号及其他任何时刻的输出符号无关,则这种信道称为无记忆信道。(3)有干扰有记忆信道。这是更一般的情况,既有干扰又有记忆,实际信道往往是这种类型。在这一类信道中某一瞬间的输出符号不但与对应时刻的输入符号有关,而且与此前其他时刻信道的输入符号及输出符号有关,这样的信道称为有记忆信道。2单符号离散信道的数学模型 单符号离散信道的输入变

8、量为,取值于a1, a2, , ar,输出变量为,取值于b1, b2, , bs,并有条件概率P(y|x)= P(y=bj|x=ai)= P(bj |ai) (i=1,2,r;j=1,2,s)这一组条件概率称为信道的传递概率或转移概率。因为信道中有干扰(噪声)存在,信道输入为x=ai时,输出是哪一个符号y,事先无法确定。但信道输出一定是b1, b2, , bs中的一个,即有 (i=1,2,r) (1-1) 由于信道的干扰使输入符号x在传输中发生错误,所以可以用传递概率P(bj|ai)来描述干扰影响的大小。因此,一般简单的单符号离散信道的数学模型可以用概率空间加以描述。另外,也可以用图来描述,如

9、图1.2所示。 图1.2 单符号离散信道定义1.1 已知发送符号为ai,通过信道传输接收到的符号为bj的概率P(bj|ai)称为前向概率。已知信道输出端接收到的符号为bj,而发送符号为ai的概率P(ai|bj),称为后向概率。有时,也把P(ai)称为输入符号的先验概率(即在接收到一个输出符号以前输入符号的概率),而对应地把P(ai|bj)称为输入符号的后验概率(在接收到一个输出符号以后输入符号的概率)。为了讨论方便,下面列出本章讨论中常用的一些关于联合概率和条件概率的关系: (1) 设输入和输出符号的联合概率为P(x= ai, y= bj)=P(ai bj),则有 (2) ()。 (3) 根据

10、贝叶斯定律,可得后验概率与先验概率之间的关系 () () 1.2 抗干扰信道编码定理及逆定理定理1.1 有噪信道编码定理设离散无记忆信道X,P(y|x),Y, P(y|x)为信道传递概率,其信道容量为C。当信息传输率R<C时,只要码长n足够长,总可以在输入的符号集中找到2nR个码字组成的一组码和相应的译码规则,使译码的错误概率任意小(PE)。在定理6.1中,信道容量C是平均互信息量的最大值其单位是“bit/符号”。定理1.2 有噪信道编码逆定理(定理6.1的逆定理) 设离散无记忆信道X,P(y|x),Y,其信道容量为C。当信息传输率R>C时,则无论码长n多长,均找不到一种编码2nR

11、,使译码错误概率任意小。定理1.1和定理1.2统称为申农第二定理,它是一个关于有效编码的存在性定理,它具有根本性的重要意义,它说明错误概率趋于零的好码是存在的。它有助于指导各种通信系统的设计,有助于评价各种通信系统及编码的效率。申农1948年发表申农第二定理后,科学家就致力于研究信道中的各种易于实现的实际编码方法,赋予码以各种形式的代数结构,出现了各种形式的代数编码、卷积码、循环码等。1.3 检错与纠错的基本原理在申农第二定理发表后,很长一段时间内人们都在探寻能够简单、有效地编码和译码的好码。由此形成了一整套纠错码理论。在此只简单地介绍检错和纠错的一些基本概念及基本原理。在信息处理过程中,为了

12、保持数据的正确性应对信息进行编码使其具有检错纠错能力,这种编码称为语法信息编码。它的基本思想是引入剩余度,在传输的信息码元后增加一些多余的码元,以使信息损失或错误后仍能在接收端恢复。通常将要处理的信息称为原信息,将原信息转化为数字信息后再进行存储、传输等处理过程称为传送。工程上最容易实现的是二元数字信息(或二元码信息)的传送。所谓二元数字信息就是由二元数域F2=0,1中的数字0与1组成的数组或向量。定义1.3 设X=(x1, x2, xn),Y=(y1, y2, yn),xiÎF2,yiÎF2,i=1, n,称X和Y对应分量不相等的分量个数为X和Y的汉明(Hamming)距

13、离,记为d(X, Y)。记则d(X, Y)= d(x1, y1)+ d(x2, y2)+ d(xn, yn)容易证明以下定理。定理1.4 设X和Y是长为n的二元码字,则(1)(非负且有界性)(2)d(X, Y)=0当且仅当X=Y(自反性)(3)d(X, Y)= d(Y, X)(对称性)(4)(三角不等式)1.4 限失真编码定理申农第一定理和申农第二定理指明:无论是无噪声信道还是有噪声信道,只要信道的信息传输率小于信道容量,总能找到一种编码,在信道上以任意小的错误概率和任意接近信道容量的信息传输率传输信息。反之,若信道信息传输率大于信道容量,一定不能使传输错误概率任意小,传输必然失真。实际上,人

14、们并不需要完全无失真地恢复信息,只是要求在一定保真度下,近似恢复信源输出的信息。比如,人类主要是通过视觉和听觉获取信息,人的视觉大多数情况下对于25帧以上的图像就认为是连续的,通常人们只需传送每秒25帧的图像就能满足通过视觉感知信息的要求,而不必占用更大的信息传输率。而大多数人只能听到几千赫兹到十几千赫兹,即便是训练有素的音乐家,一般也不过能听到20千赫兹的声音。所以,在实际生活中,通常只是要求在保证一定质量的前提下在信宿近似地再现信源输出的信息,或者说在保真度准则下,允许信源输出的信息到达信宿时有一定的失真。对于给定的信源,在允许的失真条件下,信源熵所能压缩的极限理论值是多少?申农(Shan

15、non)的重要论文“保真度准则下的离散信源编码定理”论述了在限定范围内的信源编码定理。限失真信源编码的信息率失真理论是信号量化、模数转换、频带压缩和数据压缩的理论基础,在图像处理、数字通信等领域得到广泛的应用。所谓信道产生的失真d(xn, ym)是指:当信道输入为xn时,输出得到的是ym,其差异或损失,称为译码失真,可描述为而平均译码失真则是如果要求平均译码失真小于某个给定值,即也就是对P(Y|X)施加一定的限制。把满足上式的那些P(Y|X)记为PD,在集合PD中寻找一个P(Y|X)使I(Y|X)极小,把这个极小值称为在的条件下所必须传送的信息速率,并记为R(D),即 R(D)=min(X;Y

16、)RD称R(D)为信息率失真函数。它表示信息率与失真量之间的关系。上式表明,在集合PD中,任意一个I(Y|X)值所对应的平均失真都小于或等于。也就是说,在集合PD内,只要I(Y|X)³ R(D),就可以达到;但是如果I(Y|X)< R(D),就意味着P(Y|X)不在集合PD内,因而不能满足。定理1.5(离散无记忆信源的限失真编码定理)设R(D)是某离散无记忆信源的信息率失真函数,只要满足信息率R> R(D),对于任意小的,允许失真值,以及任意足够长的码字长度,则一定存在一种编码方法,使其平均译码失真;反之,若R< R(D),则无论采用什么样的编码方法,都不可能使译码

17、的失真小于或等于。离散无记忆信源的限失真编码定理也称为申农第三编码定理,它表明:在允许失真值给定后,总存在一种编码方法,使编码后的信源输出信息率大于R(D),但可任意地接近于R(D),而平均失真小于或无限接近于允许失真值;反之,若R> R(D),则编码后的平均失真将大于。如果用二进制码符号来进行编码的话,那么在允许失真为的情况下,平均每个信源符号所需二进制码符号数的下限值在数量上等于R(D)。在不允许失真的情况下,平均每个信源符号所需二进制码符号数的下限值在数量上等于H(S)。一般情况下,有R(D)<H(S),因此,在满足保真度准则的条件下,信源所需输出数据就可以达到压缩。信息传输

18、的目标是高效率、高质量地传输信息,而高效率和高质量又常常相矛盾。本章分析的几个编码定理表明:通过适当的编码可以把高效率(传输信息的速率无限接近于信道容量)和高质量(传输信息的差错无限接近于零或者失真低于规定的允许值)完美地结合起来。2.线性分组码的编码2.1 生成矩阵线性分组码(n,k)中许用码字(组)为2k个。定义线性分组码的加法为模二加法,乘法为二进制乘法。即1+1=0、1+0=1、0+1=1、0+0=0;1×1=1、1×0=0、0×0=0、0×1=0。且码字与码字的运算在各个相应比特位上符合上述二进制加法运算规则。线性分组码具有如下性质(n,k)的

19、性质:1、封闭性。任意两个码组的和还是许用的码组。2、码的最小距离等于非零码的最小码重。对于码组长度为n、信息码元为k位、监督码元为rnk位的分组码,常记作(n,k)码,如果满足2r1n,则有可能构造出纠正一位或一位以上错误的线性码。下面我们通过(9,4)分组码的例子来说明如何具体构造这种线性码。设分组码(n,k)中,k = 4,为能纠正一位误码,要求r5。现取r5,则nkr9。该例子中,信息组为(c5c6c7c8),码字为(c8c7c6c5c4c3c2c1c0).当已知信息组时,按以下规则得到四个校验元,即 C4=c5+c6C3=c7+c8C2=c4+c6+c8 (式2.1)C1=c5+c7

20、C0=c5+c6+c7+c8这组方程称为校验方程。 (9,4)线性分组码有24(16)个许用码字或合法码字,另有29-24个禁用码字。发送方发送的是许用码字,若接收方收到的是禁用码字,则说明传输中发生了错误。 为了深化对线性分组码的理论分析,可将其与线性空间联系起来。由于每个码字都是一个二进制的n重,及二进制n维线性空间Vn中的一个矢量,因此码字又称为码矢。线性分组码的一个重要参数是码率r=k/n,它说明在一个码字中信息位所占的比重,r越大,说明信息位所占比重越大,码的传输信息的有效性越高。由于(n,k)线性分组,线性分组码的2k个码字组成了n维线性空间Vn的一个K维子空间。因此这2k个码字完

21、全可由k个线性无关的矢量所组成。 设此k个矢量为c1,c2,ck,有生成矩阵形式为c1c2···ck G=(3-2)(n,k)码字中的任一码字ci,均可由这组基底的线性组合生成,即 ci=mi ·G=mn-1 mn-2 mn-k·G 式中,mi =mn-1 mn-2 mn-k 是k个信息元组成的信息组。表3-1 (9,4)线性分组码信息组码字000000000000000010001000110010001010101001100111110001000100010100101010111010110011010001011

22、10111000011000100010010100110010110111010101001011110111011111001100110001010110111010001111101110111101111111111111对于表3-1给出的(9,4)线性分组码,可将写成矩阵形式 c8c7c6c5c4c3c2c1=c8c7c6c5·故(9,4)码的生成矩阵为 G= 可以看到,从(9,4)码的码字中,挑选出k=4个线性无关的码字作为码的一组基底,用c=m·G计算得码字。一个系统码的生成矩阵G,其左边k行k列应是一个k阶单位方阵Ik,因此生成矩阵G表示为 G=Ik P

23、(3-3) 式中,P是一个k×(n-k)阶矩阵。2.2 校验矩阵表3-1所示的(9,4)线性分组码的四个校验元由式(3-1)所示的线性方程组决定的。把(3-1)移相,有C4+c5+c6=0C3+c7+c8=0C2+c4+c6+c8=0C1+c5+c7=0C0+c5+c6+c7+c8=0C8C7C6C5C4C3C2C1C000000 001110000110001000010100010111100001 = 上式的矩阵形式为 这里的四行七列矩阵称为(9,4)码的一致校验矩阵,用H表示,即 H= (3-5)由H矩阵得到(n,k)线性分组码的每一码字,(i=1,2,2k),都必须满足由H

24、矩阵各行所确定的线性方程组,即 。(9,34)码的生成矩阵G中每一行及其线性组合都是(n,k)码的码字,所以有G·HT =0。由G和H构成的行生成的空间互为零空间,即G和H彼此正交。H=PT Ir其右边r行r列组成一个单位方阵。2.3 伴随式与译码2.3.1 码的距离及纠检错能力 1码的距离两个码字之间,对应位取之不同的个数,称为汉明距离,用d表示。一个吗的最小距离dmin定义为dmin=mind(ci,cj),ij,ci,cj(n,k),两个码字之间的距离表示了它们之间差别的大小。距离越大,两个码字的差别越大,则传送时从一个码字错成另一码字的可能性越小。码的最小距离愈大,其抗干扰能

25、力愈强。2. 线性码的纠检错能力 对于任一个(n,k)线性分组码,(1)若要在码字内检测出e个错误,则要求码的最小距离de+1;(2) 纠正t个错误,则要求码的最小距离d2t+1;(3)纠正t个错误同时检测e(t)个错误,则要求 dt+e+1;2.3.2 伴随式与译码假设接收端收到的码字为B,那么它和原来发送端发送的码字A之间就有可能存在着误差。即在码组A=a6 a5 a4 a3 a2 a1 a0 中的任意一位就有可能出错。这样我们在接收端接收到一个码组是就有可能判断错发送端原来应该要表达的意思。为了描述数据在传输信道中出现错误的情况,引入了错误图样E,在错误图样中,0代表对应位没有传错,1代

26、表传输错误。实际上错误图样E就是收序列与发送序列的差。所以在译码中用接收到的码字B模尔加错误图样E就可以得到发送端的正确码字A。因此译码的过程就是要找到错误图样E。 定义:校正子SS = B * H= ( A + E ) * H = A * H+ E * H = E * H因为A是编得的正确码字。根据前面所叙述,它和监督矩阵的转置相乘为0。显然,S仅与错误图样有关,它们之间是一一对应的关系。找到了校正子S,也就可以找到E。而与发送的码字无关。若E=0,则S=0;因此根据S是否为0可进行码字的检错。如果接收码字B中只有一位码元发生错误,又设错误在第i位。即Ei-1=1,其他的Ei均为0。在后面的

27、译码程序中,建立了一个校正子S与错误图样E对应的表。也就是收到一个B序列,就可以通过计算得到一个校正子,而每一个校正子都对应着一个错误图样E,再通过B模尔加上E,就可以得到正确的码字A。因为在不同的错误序列B中,同一位码元错误时对应的E是一样的,所以可以利用0000000这个正确的码字让它每位依次错误,来求得它的八个校正子。而这时的矩阵B就是错误图样E。这样就算得了8个校正子S。而这时的错误序列B,就是错误图样E,所以有: E与S都已经得到,这时就可以建立一个表来将它们一一对应起来。 3. 线性分组码编码的Matlab仿真3.1 程序流程图线性分组码编码的Matlab仿真程序流程图如下:开始初

28、始化k,r,k=4,r=5得到生成矩阵Q,为4行5列根据生成矩阵Q得到校验矩阵H计算所有的可用码组结束 图5-1-1线性分组码编码的Matlab仿真程序流程图3.2 程序执行结果形成Q矩阵的程序执行结果如下:图5-1-2形成Q矩阵的程序执行结果生成可用码组的程序执行结果如下:图3-1-3生成可用码组的程序执行结果3.2 线性分组码译码的Matlab仿真3.2.1 程序流程图线性分组码译码的Matlab仿真程序流程图如下:图3-2-1线性分组码译码的Matlab仿真程序流程图3.2.2 程序执行结果 输出无错时显示图如下:图3-2-2输出无错时显示图有一位错误输入时的显示图如下:图3-2-3有一

29、位错误输入时的显示图有两位错误输入时的显示图如下:图3-2-4有两位错误输入时的显示图3.3结果分析3.3.1输入无错时的结果分析由图5-1 输出编码结果和正确输入时显示图所示的结果可以看出编码的结果的八种情况和在推导过程中运算的结果是一致的,可以见得程序的编码过程是正确的。对于译码过程而言,当界面显示“请输入要校验的码字(9位):” ,然后从提示符后输入:000000000,由于输入的接收码组与编码后的码字一致,它提取了每个码组的前四位,即信息位,由结果看出译码过程是正确的,并没有出现错译的情况,可见程序的译码片段是正确的。3.3.2输入一位错误时的结果分析对于纠错过程而言,当界面显示“请输

30、入要校验的码字(9位):” 。然后从提示符后输入:000000001,由图5-2 有一位错误输入时的显示图所知,接收码组的第五位发生了错误,经程序纠检错误后改正了接收序列的错误,并且正确译出了信息位。可见程序的纠错功能也是可以实现的,以上结果进一步证实了,系统译码程序的正确性。5.3.3输入错误时的结果分析当输入B=001000010时,校正子是01110,检测不出错误。参考文献1 孙丽华编. 信息论与纠错编码. 电子工业出版社. 2005,32 郭文彬 桑林编. 通信原理-基于MATLAB的计算机仿真. 北京邮电大学出版社. 2006.23 苏金明 阮沈勇编. MATLAB实用教程(第二版)

31、. 电子工业出版社. 2008.24 徐东艳 孟晓刚编. MATLAB函数库查询词典. 中国铁道出版社. 2006.45 潘新民编. 计算机通信技术. 电子工业出版社. 2003.76 吴玲达 李国辉 杨冰等编. 计算机通信原理与技术. 国防科技大学出版社. 2003.3 总结通过对线性分组码中的线性分组码的编译码编程实现,了解到线性分组码的构成方式是把信息序列分成每k个码元一段,并由这k个码元按一定规则产生r 个校验位,组成长度为n=k+r的码字,用(n,k)表示。信息码元与校验位之间为线性关系。并且知道了线性分组码的编码过程信息码元与校验位之间的线性关系实现起来是十分简单的.对于码组长度为

32、n、信息码元为k位、监督码元为rnk位的分组码,如果满足2r1n,则有可能构造出纠正一位或一位以上错误的线性码。就像本设计的(9,4)分组码的(n,k)中,n=9,k = 4,r4能纠正一位误码,检测到两位误码。运用MATLAB语言进行编程,可以较明显的知道编码的过程和译码时出现的错误,码字的最小距离是3时,可以纠正一位错误,当输入特定的两位错误时,该码字还可以纠正这两位错误,这种情况在编程结果的命令窗口中可以明显看到。线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术之一。致 谢这里,我要郑重地感谢我们的课程设计指导

33、老师。正是他 的耐心指导才让我们能够顺利的完成此次课程设计,在此说声谢谢!在此,我也要感谢我们的小组成员,以及所有帮助我完成嵌入式程序设计论文的同学们。 在这次的线性分组码课程设计中,老师和同学们在设计思路和设计步骤上给了我很大的帮助,帮我解答疑难问题,给我提供资料,给我提供查阅资料的信息,引导我该如何去思考问题,教会我解决问题的方法。同时又鼓励我自己学习,老师给我的不仅是知识,是帮助,更是学习的信心和智慧,在这里衷心感谢老师的耐心细心和一丝不苟的帮助。同时也感谢和我一起课设的同学,这是我们共同努力的结果,衷心的感谢大家对我的帮助和支持。希望在以后的学习中我们共同学习与成长。附录代码% - 初

34、始化k,r,满足分配条件 -flag_in=1;%输入条件标记,若满足条件则跳出循环,否则就一直输入(默认不满足)while(flag_in) k=4; r=5; if(2r-1>=k+r) flag_in=0; endend% -% - 生成校正子,可选择自动生成或手动输入 -Q_yesOrNo=input('是否自动生成校正子?Y/N:','s');if(Q_yesOrNo='Y') %从数值不会重合的集合中选出校验子的十进制数 Q_randFull=randperm(2r-1); Q_randCheck=zeros(1,k); %初始

35、化k行r列的矩阵Q Q=zeros(k,r); i=1;j=1; %选出可用的校验子(十进制) while(i<=k) flag_cir=1;%循环标记,表示随机矩阵中是否有不符合规则的数,1,2,4,8,. for n=0:1:k-1%判断是否有特殊数字 if(Q_randFull(j)=2n) flag_cir=0;%有特殊数字则将标记置为0 end end if(flag_cir=1)%一般情况下(默认flag_cir=1),会将正常的数组赋予Q_randCheck Q_randCheck(i)=Q_randFull(j); j=j+1; i=i+1; else%否则,就使被挑选的

36、数下标加1,即此数不符合要求,试添加下一个数 j=j+1; end end Q_charA=dec2bin(Q_randCheck);%将十进数格式转换为二进制表示方式 for i=1:1:k for j=1:1:r %将字符转换为数值后写入矩阵 Q(i,j)=str2double(Q_charA(i,j); end endelse %初始化k行r列的矩阵 Q=zeros(k,r); %根据校正子生成Q,为k行r列 for i=1:1:k %要求为输入字符,否则默认输入的为数值 Q_charA(i,:)=input(sprintf('输入一个校正子,以检测C%d位的错码(%d位)

37、9;,k+r-i,r),'s'); for j=1:1:r %将字符转换为数值后写入矩阵 Q(i,j)=str2double(Q_charA(i,j); end endend% -% - 生成完全的校正子与错码位置之间的对应关系 -%生成单位矩阵(字符型),以补齐校正子for i=r-1:-1:0 Qr(r-i)=2i;endQ_charB=dec2bin(Qr);%将十进数格式转换为二进制表示方式%生成校正子与错码位置的对应关系Q_charC(1:k,:)=Q_charA;Q_charC(k+1:k+r,:)=Q_charB;Q_charD=reshape(sprintf(&

38、#39;->C%02d',k+r-1:-1:0),8,k+r)'disp('校正子与错码位置的对应关系');Q_char=Q_charC Q_charD% -% - 线性分组码内部的函数关系及计算 -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(vali

39、d_yesOrNo='Y') %初始化2k行k+r列,与1行k列的矩阵 valid_codes=zeros(2k,k+r); valid_buffer=zeros(1,k); %初始化每行码重数组 weight_array=zeros(1,2k); %遍历可用信息码并输出所有可用码组 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_codes(i,:); end disp(

温馨提示

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

评论

0/150

提交评论