当前位置:文档之家› 线性分组码编码的分析与实现课程设计说明书

线性分组码编码的分析与实现课程设计说明书

摘要该系统是(6,3)线性分组码的编码和译码的实现,它可以对输入的三位的信息码进行线性分组码编码,对于接收到的六位码字可以进行译码,从而译出三位信息码。

当接收到的六位码字中有一位发生错误时,可以纠正这一位错码;当接收到的码字有两位发生错误时,只能纠正一位错误,但同时能检测出另一位错误不能纠正。

只有特定位有两位错误时,才能纠正两位错误。

这样就译出正确的信息码组,整个过程是用MATLAB语言实现的。

关键词:编码; 译码; 纠错目录1 课题描述 (1)2 设计原理 (4)2.1MATLAB概述 (5)2.2 线性分组码的编码 (5)2.2.1 生成矩阵 (5)2.2.2 校验矩阵 (8)2.3 伴随式与译码 (9)2.3.1 码的距离及纠检错能力 (9)2.3.2 伴随式与译码 (9)3 设计过程 (10)3.1 编码过程 (10)3.2 译码过程 (11)4 仿真程序及结果分析 (14)4.1 仿真程序 (14)4.2 仿真结果 (16)4.3 结果分析 (18)总结 (19)参考文献 (20)1课题描述近年来,随着计算机、卫星通信及高速数据网的飞速发展,数据的交换、处理和存储技术得到了广泛的应用,人们对数据传输和存储系统的可靠性提出了越来越高的要求。

因此,如何控制差错、提高数据传输和存储的可靠性,成为现代数字通信系统设计的重要课题。

目前,绝大多数的数字计算机和数字通信系统中广泛采用二进制形式的码。

而线性分组码具有编译码简单,封闭性好等特点,采用差错控制编码技术是提高数字通信可靠性的有效方法,是目前较为流行的差错控制编码技术。

对线性分组码的讨论都在有限域GF(2)上进行,域中元素为{0,1},域中元素计算为模二加法和模二乘法。

分组码是一组固定长度的码组,可表示为(n , k),通常它用于前向纠错。

在分组码中,监督位被加到信息位之后,形成新的码。

在编码时,k个信息位被编为n位码组长度,而n-k个监督位的作用就是实现检错与纠错。

对于长度为n的二进制线性分组码,它有种2n可能的码组,从2n种码组中,可以选择M=2k个码组(k<n)组成一种码。

这样,一个k比特信息的线性分组码可以映射到一个长度为n码组上,该码组是从M=2k个码组构成的码集中选出来的,这样剩下的码组就可以对这个分组码进行检错或纠错。

2 设计原理要设计一个(6,3)线性分组码的编译码程序,最基本的是要具备对输入的信息码进行编码,让它具有抗干扰的能力。

同时,还要让它具有对接收到的整个码组中提取信息码组的功能。

但是,在实际的通信系统中,由于信道传输特性不理想以及加性噪声的影响,接收到的信息中不可避免地会发生错误,影响通信系统的传输可靠性,因而,本设计还要让该程序具有纠正错误的能力,当接收到的码组中有一位码,发生错误时可以检测到这一位错码,并且可以纠正这一位错码,并且让系统从纠正后的码组中提取正确的信息码组。

针对给定的矩阵Q=完成如下的工作:1 完成对任意信息序列的编码2 根据生成矩阵,形成监督矩阵;3 根据得到的监督矩阵,得到伴随式,并根据它进行译码;4 验证工作的正确性。

2.1MATLAB概述MATLAB是很实用的数学软件它在数学类科技应用软件中在数值运算方面首屈一指。

MATLAB可以进行运算、绘制函数和数据、实现算法、创建用户界面、连接接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。

可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

2.2线性分组码的编码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)的性质:1、封闭性。

任意两个码组的和还是许用的码组。

2、码的最小距离等于非零码的最小码重。

对于码组长度为n、信息码元为k位、监督码元为r=n-k位的分组码,常记作(n,k)码,如果满足2r-1≥n,则有可能构造出纠正一位或一位以上错误的线性码。

下面我们通过(7,3)分组码的例子来说明如何具体构造这种线性码。

设分组码(n ,k )中,k = 3,为能纠正一位误码,要求r≥3。

现取r =4,则n =k +r =7。

该例子中,信息组为(c 6c 5c 4),码字为(c 6c 5c 4c 3c 2c 1c 0).当已知信息组时,按以下规则得到四个校验元,即c 3=c 6+c 4c 2=c 6+c 5+c 4 (2-1)c 1=c 6+c 5c 0=c 5+c 4这组方程称为校验方程。

(7,3)线性分组码有23(8)个许用码字或合法码字,另有27-23个禁用码字。

发送方发送的是许用码字,若接收方收到的是禁用码字,则说明传输中发生了错误。

为了深化对线性分组码的理论分析,可将其与线性空间联系起来。

由于每个码字都是一个二进制的n 重,及二进制n 维线性空间Vn 中的一个矢量,因此码字又称为码矢。

线性分组码的一个重要参数是码率r=k/n,它说明在一个码字中信息位所占的比重,r 越大,说明信息位所占比重越大,码的传输信息的有效性越高。

由于(n,k)线性分组,线性分组码的2k个码字组成了n 维线性空间Vn 的一个K 维子空间。

因此这2k个码字完全可由k 个线性无关的矢量所组成。

设此k 个矢量为c 1,c 2,…,c k ,有生成矩阵形式为(2-2)(n,k)码字中的任一码字c i ,均可由这组基底的线性组合生成,即 c i =m i ·G=[m n-1 m n-2 … m n-k ]·G式中,mi =[m n-1 m n-2 …m n-k ]是k 个信息元组成的信息组。

表2-1 (7,3)线性分组码对于表2-1给出的(7,3)线性分组码,可将写成矩阵形式[c 6 c 5 c 4 c 3 c 2 c 1 c 0]=[c 6 c 5 c 4]·111111100100111001故(7,3)码的生成矩阵为G= 111111100100111001可以看到,从(7,3)码的8个码字中,挑选出k=3个线性无关的码字(1001110)(0100111),(00111101)作为码的一组基底,用c=m ·G 计算得码字。

一个系统码的生成矩阵G ,其左边k 行k 列应是一个k 阶单位方阵I k ,因此生11101100011101110001101成矩阵G 表示为G=[I k P] (2-3) 式中,P 是一个k ×(n-k)阶矩阵。

2.2.2 校验矩阵表3-1所示的(7,3)线性分组码的四个校验元由式(2-1)所示的线性方程组决定的。

把(2-1)移相,有c6+c4+c3=0c6+c5+c4+c2=0c6+c1+c5=0 (2-4)c5+c4+c0=0上式的矩阵形式为111110001100101110001101 · 0123456c c c c c c c =000这里的四行七列矩阵称为(7,3)码的一致校验矩阵,用H 表示,即H= (2-5)由H 矩阵得到(n,k)线性分组码的每一码字c i,(i=1,2, (2)),都必须满足由H 矩阵各行所确定的线性方程组,即 c i ·H T =0.(7,3)码的生成矩阵G 中每一行及其线性组合都是(n,k )码的码字,所以有G ·H T =0。

由G 和H 构成的行生成的空间互为零空间,即G 和H 彼此正交。

H=[P T I r ]其右边r 行r 列组成一个单位方阵。

2.3 伴随式与译码2.3.1 码的距离及纠检错能力1.码的距离两个码字之间,对应位取之不同的个数,称为汉明距离,用d表示。

一个吗的最小距离d min定义为d min=min{d(c i,c j),i≠j,c i,c j∈(n,k)},两个码字之间的距离表示了它们之间差别的大小。

距离越大,两个码字的差别越大,则传送时从一个码字错成另一码字的可能性越小。

码的最小距离愈大,其抗干扰能力愈强。

2. 线性码的纠检错能力对于任一个(n,k)线性分组码,若要在码字内(1)检测出e个错误,则要求码的最小距离d≥e+1;(2) 纠正t个错误,则要求码的最小距离d≥2t+1;(3)纠正t个错误同时检测e(≥t)个错误,则要求 d≥t+e+1;2.3.2 伴随式与译码假设接收端收到的码字为B,那么它和原来发送端发送的码字A之间就有可能存在着误差。

即在码组A={a6 a5 a4 a3 a2 a1 a0 }中的任意一位就有可能出错。

这样我们在接收端接收到一个码组是就有可能判断错发送端原来应该要表达的意思。

为了描述数据在传输信道中出现错误的情况,引入了错误图样E,在错误图样中,0代表对应位没有传错,1代表传输错误。

实际上错误图样E就是收序列与发送序列的差。

所以在译码中用接收到的码字B模尔加错误图样E就可以得到发送端的正确码字A。

因此译码的过程就是要找到错误图样E。

定义:校正子SS = B * H T= ( A + E ) * H T= A * H T+ E * H T= E * H T因为A是编得的正确码字。

根据前面所叙述,它和监督矩阵的转置相乘为0。

显然,S仅与错误图样有关,它们之间是一一对应的关系。

找到了校正子S,也就可以找到E 。

而与发送的码字无关。

若E=0,则S=0;因此根据S 是否为0可进行码字的检错。

如果接收码字B 中只有一位码元发生错误,又设错误在第i 位。

即E i-1=1,其他的E i 均为0。

在后面的译码程序中,建立了一个校正子S 与错误图样E 对应的表。

也就是收到一个B 序列,就可以通过计算得到一个校正子,而每一个校正子都对应着一个错误图样E ,再通过B 模尔加上E ,就可以得到正确的码字A 。

因为在不同的错误序列B 中,同一位码元错误时对应的E 是一样的,所以可以利用0000000这个正确的码字让它每位依次错误,来求得它的八个校正子。

而这时的矩阵B 就是错误图样E 。

这样就算得了8个校正子S 。

而这时的错误序列B ,就是错误图样E ,所以有: E 与S 都已经得到,这时就可以建立一个表来将它们一一对应起来,以便在编程过程中用SWITCH 语句。

相关主题