线性分组码的编码与译码.docx
- 文档编号:12218359
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:31
- 大小:141.65KB
线性分组码的编码与译码.docx
《线性分组码的编码与译码.docx》由会员分享,可在线阅读,更多相关《线性分组码的编码与译码.docx(31页珍藏版)》请在冰豆网上搜索。
线性分组码的编码与译码
···················
实践教学
···················
大学
计算机与通信学院
2014年秋季学期
计算机通信课程设计
题目:
线性分组码(9,4)码的编译码仿真设计
专业班级:
姓名:
学号:
指导教师:
成绩:
摘要
该系统是(9,4)线性分组码的编码和译码的实现,它可以对输入的四位的信息码进行线性分组码编码,对于接收到的九位码字可以进行译码,从而译出四位信息码。
当接收到的九位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。
只有特定位有两位错误时,才能纠正两位错误。
这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。
关键词:
编码;译码;纠错
前言
由于计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象,人们对数据传输和存储系统的可靠性提出来了越来越高的要求,经过长时间的努力,通过编译码来控制差错、提高可靠性的方式在信道传输中得到了大量的使用和发展,并形成了一门新的技术叫做纠错编码技术,纠错编码按其码字结构形式和对信息序列处理方式的不同分为两大类:
分组码和卷积码。
目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。
而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。
对线性分组码的讨论都在有限域GF
(2)上进行,域中元素为{0,1},域中元素计算为模二加法和模二乘法。
分组码是一组固定长度的码组,可表示为(n,k),通常它用于前向纠错。
在分组码中,监督位被加到信息位之后,形成新的码。
在编码时,k个信息位被编为n位码组长度,而n-k个监督位的作用就是实现检错与纠错。
对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中,可以选择M=2k个码组(k 这样,一个k比特信息的线性分组码可以映射到一个长度为n码组上,该码组是从M=2k个码组构成的码集中选出来的,这样剩下的码组就可以对这个分组码进行检错或纠错。 1.信道编码概述 信道模型 信息必须首先转换成能在信道中传输或存储的信息后才能通过信道传送给收信者。 在信息传输过程中,噪声或干扰主要是从信道引入的,它使信息通过信道传输后产生错误和失真。 因此信道的输入和输出之间一般不是确定的函数关系,而是统计依赖的关系。 只要知道信道的输入信号、输出信号以及它们之间的统计依赖关系,就可以确定信道的全部特性。 信道的种类很多,这里只研究无反馈、固定参数的单用户离散信道。 1.离散信道的数学模型 离散信道的数学模型一般如图所示。 图中输入和输出信号用随机矢量表示,输入信号为 X=(X1,X2,…,XN),输出信号为Y=(Y1,Y2,…,YN);每个随机变量Xi和Yi又分别取值于符号集A={a1,a2,…,ar}和B={b1,b2,…,bs},其中r不一定等于s;条件概率P(y|x)描述了输入信号和输出信号之间的统计依赖关系,反映了信道的统计特性。 图离散信道模型 根据信道的统计特性即条件概率P(y|x)的不同,离散信道可以分为三种情况: (1)无干扰信道。 信道中没有随机干扰或干扰很小,输出信号 与输入信号 之间有确定的一一对应的关系。 (2)有干扰无记忆信道。 实际信道中常有干扰,即输出符号与输入符号之间没有确定的对应关系。 若信道任一时刻的输出符号只统计依赖于对应时刻的输入符号,而与非对应时刻的输入符号及其他任何时刻的输出符号无关,则这种信道称为无记忆信道。 (3)有干扰有记忆信道。 这是更一般的情况,既有干扰又有记忆,实际信道往往是这种类型。 在这一类信道中某一瞬间的输出符号不但与对应时刻的输入符号有关,而且与此前其他时刻信道的输入符号及输出符号有关,这样的信道称为有记忆信道。 2.单符号离散信道的数学模型 单符号离散信道的输入变量为 ,取值于{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) 来描述干扰影响的大小。 因此,一般简单的单符号离散信道的数学模型可以用概率空间[ ]加以描述。 另外,也可以用图来描述,如图所示。 图单符号离散信道 定义已知发送符号为ai,通过信道传输接收到的符号为bj的概率P(bj|ai)称为前向概率。 已知信道输出端接收到的符号为bj,而发送符号为ai的概率P(ai|bj),称为后向概率。 有时,也把P(ai)称为输入符号的先验概率(即在接收到一个输出符号以前输入符号的概率),而对应地把P(ai|bj)称为输入符号的后验概率(在接收到一个输出符号以后输入符号的概率)。 为了讨论方便,下面列出本章讨论中常用的一些关于联合概率和条件概率的关系: (1)设输入和输出符号的联合概率为P(x=ai,y=bj)=P(aibj),则有 (2) ( )。 (3)根据贝叶斯定律,可得后验概率与先验概率之间的关系 ( ) = ( ) 抗干扰信道编码定理及逆定理 定理有噪信道编码定理 设离散无记忆信道[X,P(y|x),Y],P(y|x)为信道传递概率,其信道容量为C。 当信息传输率R )。 在定理中,信道容量C是平均互信息量的最大值 其单位是“bit/符号”。 定理有噪信道编码逆定理(定理的逆定理) 设离散无记忆信道[X,P(y|x),Y],其信道容量为C。 当信息传输率R>C时,则无论码长n多长,均找不到一种编码2nR,使译码错误概率任意小。 定理和定理统称为申农第二定理,它是一个关于有效编码的存在性定理,它具有根本性的重要意义,它说明错误概率趋于零的好码是存在的。 它有助于指导各种通信系统的设计,有助于评价各种通信系统及编码的效率。 申农1948年发表申农第二定理后,科学家就致力于研究信道中的各种易于实现的实际编码方法,赋予码以各种形式的代数结构,出现了各种形式的代数编码、卷积码、循环码等。 检错与纠错的基本原理 在申农第二定理发表后,很长一段时间内人们都在探寻能够简单、有效地编码和译码的好码。 由此形成了一整套纠错码理论。 在此只简单地介绍检错和纠错的一些基本概念及基本原理。 在信息处理过程中,为了保持数据的正确性应对信息进行编码使其具有检错纠错能力,这种编码称为语法信息编码。 它的基本思想是引入剩余度,在传输的信息码元后增加一些多余的码元,以使信息损失或错误后仍能在接收端恢复。 通常将要处理的信息称为原信息,将原信息转化为数字信息后再进行存储、传输等处理过程称为传送。 工程上最容易实现的是二元数字信息(或二元码信息)的传送。 所谓二元数字信息就是由二元数域F2={0,1}中的数字0与1组成的数组或向量。 定义设X=(x1,x2,…,xn),Y=(y1,y2,…,yn),xiF2,yiF2,i=1,…,n,称X和Y对应分量不相等的分量个数为X和Y的汉明(Hamming)距离,记为d(X,Y)。 记 则 d(X,Y)=d(x1,y1)+d(x2,y2)+…+d(xn,yn) 容易证明以下定理。 定理设X和Y是长为n的二元码字,则 (1) (非负且有界性) (2)d(X,Y)=0当且仅当X=Y(自反性) (3)d(X,Y)=d(Y,X)(对称性) (4) (三角不等式) 限失真编码定理 申农第一定理和申农第二定理指明: 无论是无噪声信道还是有噪声信道,只要信道的信息传输率 小于信道容量 ,总能找到一种编码,在信道上以任意小的错误概率和任意接近信道容量的信息传输率传输信息。 反之,若信道信息传输率 大于信道容量 ,一定不能使传输错误概率任意小,传输必然失真。 实际上,人们并不需要完全无失真地恢复信息,只是要求在一定保真度下,近似恢复信源输出的信息。 比如,人类主要是通过视觉和听觉获取信息,人的视觉大多数情况下对于25帧以上的图像就认为是连续的,通常人们只需传送每秒25帧的图像就能满足通过视觉感知信息的要求,而不必占用更大的信息传输率。 而大多数人只能听到几千赫兹到十几千赫兹,即便是训练有素的音乐家,一般也不过能听到20千赫兹的声音。 所以,在实际生活中,通常只是要求在保证一定质量的前提下在信宿近似地再现信源输出的信息,或者说在保真度准则下,允许信源输出的信息到达信宿时有一定的失真。 对于给定的信源,在允许的失真条件下,信源熵所能压缩的极限理论值是多少申农(Shannon)的重要论文“保真度准则下的离散信源编码定理”论述了在限定范围内的信源编码定理。 限失真信源编码的信息率失真理论是信号量化、模数转换、频带压缩和数据压缩的理论基础,在图像处理、数字通信等领域得到广泛的应用。 所谓信道产生的失真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) RD 称R(D)为信息率失真函数。 它表示信息率与失真量之间的关系。 上式表明,在集合PD中,任意一个I(Y|X)值所对应的平均失真都小于或等于 。 也就是说,在集合PD内,只要I(Y|X)R(D),就可以达到 ;但是如果I(Y|X) 。 定理(离散无记忆信源的限失真编码定理) 设R(D)是某离散无记忆信源的信息率失真函数,只要满足信息率R>R(D),对于任意小的 ,允许失真值 ,以及任意足够长的码字长度 ,则一定存在一种编码方法,使其平均译码失真 ;反之,若R 。 离散无记忆信源的限失真编码定理也称为申农第三编码定理,它表明: 在允许失真值 给定后,总存在一种编码方法,使编码后的信源输出信息率 大于R(D),但可任意地接近于R(D),而平均失真 小于或无限接近于允许失真值 ;反之,若R>R(D),则编码后的平均失真 将大于 。 如果用二进制码符号来进行编码的话,那么在允许失真为 的情况下,平均每个信源符号所需二进制码符号数的下限值在数量上等于R(D)。 在不允许失真的情况下,平均每个信源符号所需二进制码符号数的下限值在数量上等于H(S)。 一般情况下,有R(D) 的条件下,信源所需输出数据就可以达到压缩。 信息传输的目标是高效率、高质量地传输信息,而高效率和高质量又常常相矛盾。 本章分析的几个编码定理表明: 通过适当的编码可以把高效率(传输信息的速率无限接近于信道容量)和高质量(传输信息的差错无限接近于零或者失真低于规定的允许值)完美地结合起来。 2.线性分组码的编码 生成矩阵 线性分组码(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)的性质: 1、封闭性。 任意两个码组的和还是许用的码组。 2、码的最小距离等于非零码的最小码重。 对于码组长度为n、信息码元为k位、监督码元为r=n-k位的分组码,常记作(n,k)码,如果满足2r-1≥n,则有可能构造出纠正一位或一位以上错误的线性码。 下面我们通过(9,4)分组码的例子来说明如何具体构造这种线性码。 设分组码(n,k)中,k=4,为能纠正一位误码,要求r≥5。 现取r=5,则n=k+r=9。 该例子中,信息组为(c5c6c7c8),码字为(c8c7c6c5c4c3c2c1c0).当已知信息组时,按以下规则得到四个校验元,即 C4=c5+c6 C3=c7+c8 C2=c4+c6+c8(式) C1=c5+c7 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个码字完全可由k个线性无关的矢量所组成。 设此k个矢量为c1,c2,…,ck,有生成矩阵形式为 G= (3-2) (n,k)码字中的任一码字ci,均可由这组基底的线性组合生成,即 ci=mi ·G=[mn-1mn-2…mn-k]·G 式中,mi =[mn-1mn-2…mn-k]是k个信息元组成的信息组。 表3-1(9,4)线性分组码 信息组 码字 0000 000000000 0001 000100011 0010 001010101 0011 001111100 0100 0 0101 01011101 0110 0 0111 0 1000 0 1001 11 1010 11 1011 0 1100 0 1101 1 1110 0 1111 1 对于表3-1给出的(9,4)线性分组码,可将写成矩阵形式 [c8c7c6c5c4c3c2c1]=[c8c7c6c5]· 故(9,4)码的生成矩阵为 G= 可以看到,从(9,4)码的码字中,挑选出k=4个线性无关的码字作为码的一组基底,用c=m·G计算得码字。 一个系统码的生成矩阵G,其左边k行k列应是一个k阶单位方阵Ik,因此生成矩阵G表示为 G=[IkP](3-3) 式中,P是一个k×(n-k)阶矩阵。 校验矩阵 表3-1所示的(9,4)线性分组码的四个校验元由式(3-1)所示的线性方程组决定的。 把(3-1)移相,有 C4+c5+c6=0 C3+c7+c8=0 C2+c4+c6+c8=0 C1+c5+c7=0 C0+c5+c6+c7+c8=0 = 上式的矩阵形式为 这里的四行七列矩阵称为(9,4)码的一致校验矩阵,用H表示,即 H=(3-5) 由H矩阵得到(n,k)线性分组码的每一码字 (i=1,2,…,2k),都必须满足由H矩阵各行所确定的线性方程组,即 。 (9,34)码的生成矩阵G中每一行及其线性组合都是(n,k)码的码字,所以有G·HT=0。 由G和H构成的行生成的空间互为零空间,即G和H彼此正交。 H=[PTIr]其右边r行r列组成一个单位方阵。 伴随式与译码 码的距离及纠检错能力 1.码的距离 两个码字之间,对应位取之不同的个数,称为汉明距离,用d表示。 一个吗的最小距离dmin定义为dmin=min{d(ci,cj),i≠j,ci,cj∈(n,k)},两个码字之间的距离表示了它们之间差别的大小。 距离越大,两个码字的差别越大,则传送时从一个码字错成另一码字的可能性越小。 码的最小距离愈大,其抗干扰能力愈强。 2.线性码的纠检错能力 对于任一个(n,k)线性分组码, (1)若要在码字内检测出e个错误,则要求码的最小距离d≥e+1; (2)纠正t个错误,则要求码的最小距离d≥2t+1;(3)纠正t个错误同时检测e(≥t)个错误,则要求d≥t+e+1; 伴随式与译码 假设接收端收到的码字为B,那么它和原来发送端发送的码字A之间就有可能存在着误差。 即在码组A={a6a5a4a3a2a1a0}中的任意一位就有可能出错。 这样我们在接收端接收到一个码组是就有可能判断错发送端原来应该要表达的意思。 为了描述数据在传输信道中出现错误的情况,引入了错误图样E,在错误图样中,0代表对应位没有传错,1代表传输错误。 实际上错误图样E就是收序列与发送序列的差。 所以在译码中用接收到的码字B模尔加错误图样E就可以得到发送端的正确码字A。 因此译码的过程就是要找到错误图样E。 定义: 校正子S S=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。 在后面的译码程序中,建立了一个校正子S与错误图样E对应的表。 也就是收到一个B序列,就可以通过计算得到一个校正子,而每一个校正子都对应着一个错误图样E,再通过B模尔加上E,就可以得到正确的码字A。 因为在不同的错误序列B中,同一位码元错误时对应的E是一样的,所以可以利用0000000这个正确的码字让它每位依次错误,来求得它的八个校正子。 而这时的矩阵B就是错误图样E。 这样就算得了8个校正子S。 而这时的错误序列B,就是错误图样E,所以有: E与S都已经得到,这时就可以建立一个表来将它们一一对应起来。 3.线性分组码编码的Matlab仿真 程序流程图 线性分组码编码的Matlab仿真程序流程图如下: 图5-1-1线性分组码编码的Matlab仿真程序流程图 程序执行结果 形成Q矩阵的程序执行结果如下: 图5-1-2形成Q矩阵的程序执行结果 生成可用码组的程序执行结果如下: 图3-1-3生成可用码组的程序执行结果 线性分组码译码的Matlab仿真 程序流程图 线性分组码译码的Matlab仿真程序流程图如下: 图3-2-1线性分组码译码的Matlab仿真程序流程图 程序执行结果 输出无错时显示图如下: 图3-2-2输出无错时显示图 有一位错误输入时的显示图如下: 图3-2-3有一位错误输入时的显示图 有两位错误输入时的显示图如下: 图3-2-4有两位错误输入时的显示图 结果分析 输入无错时的结果分析 由图5-1输出编码结果和正确输入时显示图所示的结果可以看出编码的结果的八种情况和在推导过程中运算的结果是一致的,可以见得程序的编码过程是正确的。 对于译码过程而言,当界面显示“请输入要校验的码字(9位): ”,然后从提示符后输入: 000000000,由于输入的接收码组与编码后的码字一致,它提取了每个码组的前四位,即信息位,由结果看出译码过程是正确的,并没有出现错译的情况,可见程序的译码片段是正确的。 输入一位错误时的结果分析 对于纠错过程而言,当界面显示“请输入要校验的码字(9位): ”。 然后从提示符后输入: 000000001,由图5-2有一位错误输入时的显示图所知,接收码组的第五位发生了错误,经程序纠检错误后改正了接收序列的错误,并且正确译出了信息位。 可见程序的纠错功能也是可以实现的,以上结果进一步证实了,系统译码程序的正确性。 输入错误时的结果分析 当输入B=001000010时,校正子是01110,检测不出错误。 参考文献 [1]孙丽华编.信息论与纠错编码.电子工业出版社.2005,3 [2]郭文彬桑林编.通信原理-基于MATLAB的计算机仿真.北京邮电大学出版社. [3]苏金明阮沈勇编.MATLAB实用教程(第二版).电子工业出版社. [4]徐东艳孟晓刚编.MATLAB函数库查询词典.中国铁道出版社. [5]潘新民编.计算机通信技术.电子工业出版社. [6]吴玲达李国辉杨冰等编.计算机通信原理与技术.国防科技大学出版社. 总结 通过对线性分组码中的线性分组码的编译码编程实现,了解到线性分组码的构成方式是把信息序列分成每k个码元一段,并由这k个码元按一定规则产生r个校验位,组成长度为n=k+r的码字,用(n,k)表示。 信息码元与校验位之间为线性关系。 并且知道了线性分组码的编码过程信息码元与校验位之间的线性关系实现起来是十分简单的. 对于码组长度为n、信息码元为k位、监督码元为r=n-k位的分组码,如果满足2r-1≥n,则有可能构造出纠正一位或一位以上错误的线性码。 就像本设计的(9,4)分组码的(n,k)中,n=9,k=4,r≥4能纠正一位误码,检测到两位误码。 运用MATLAB语言进行编程,可以较明显的知道编码的过程和译码时出现的错误,码字的最小距离是3时,可以纠正一位错误,当输入特定的两位错误时,该码字还可以纠正这两位错误,这种情况在编程结果的命令窗口中可以明显看到。 线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术之一。 致谢 这里,我要郑重地感谢我们的课程设计指导老师。 正是他的耐心指导才让我们能够顺利的完成此次课程设计,在此说声谢谢! 在此,我也要感谢我们的小组成员,以及所有帮助我完成嵌入式程序设计论文的同学们。 在这次的线性分组码课程设计中,老师和同学们在设计思路和设计步骤上给了我很大的帮助,帮我解答疑难问题,给我提供资料,给我提供查阅资料的信息,引导我该如何去思考问题,教会我解决问题的方法。 同时又鼓励我自己学习,老师给我的不仅是知识,是帮助,更是学习的信心和智慧,在这里衷心感谢老师的耐心细心和一丝不苟的帮助。 同时也感谢和我一起课设的同学,这是我们共同努力的结果,衷心的感谢大家对我的帮助和支持。 希望在以后的学习中我们共同学习与成长。 附录 代码 %---初始化k,r,满足分配条件---- flag_in=1;%输入条件标记,若满足条件则跳出循环,否则就一直输入(默认不满足) while(flag_in) k=4; r=5; i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性 分组码 编码 译码