吉林建筑大学电气与电子信息工程学院信息理论与编码课程设计报告设计题目:线性分组码编码的分析与实现专业班级:电子信息工程 111 学生姓名:学号:指导教师:设计时间:第1章 概述设计的作用、目的1、通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想。
2、加深对理论知识的理解,提高实践技能,培养独立分析问题及解决问题的能力。
3、掌握编码的基本原理与编码过程,增强逻辑思维能力。
4、使用MATLABH 或其他语言进行编程及实现。
设计任务及要求设计一个(7,3)线性分组码的编译码程序,完成对任意序列的编码,根据生成矩阵形成监督矩阵,得到伴随式下,并根据其进行译码,同时验证工作的正确性,最基本的是要具备对输入的信息码进行编码,让它具有抗干扰的能力。
1. 理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法;2. 掌握哈夫曼编码/费诺编码方法的基本步骤及优缺点;3. 深刻理解信道编码的基本思想与目的,理解线性分组码的基本原理与编 码过程4. 能够使用MATLAB 或其他语言进行编程,编写的函数要有通用性。
设计内容已知一个(7,3)线性分组码的校验元与信息元有如下限定关系。
设码字为(c 1,c 2, c 3, c 4, c 5, c 6,c 7)4315213216327c c c cc c c c c c c c c =⊕⎧⎪=⊕⊕⎪⎨=⊕⎪⎪=⊕⎩求出标准校验矩阵、Q 矩阵、标准生成矩阵,完成对任意信息序列(23个许用码字)的编码。
当接收码字分别为(0000000), (0000001), (0000010), (0000100), (0001000), (0010000), (0100000), (1000000), (0100100)时,写出其伴随式S ,以表格形式写出伴随式与错误图样E 的对应关系,纠错并正确译码,当有两位错码时,假定为c 5位和c 2位发生错误。
第2章 线性分组码编码分析与实现设计原理1. 线性分组码的生成矩阵和校验矩阵(1)(n ,k )线性分组码的性质1、封闭性。
任意两个码组的和还是许用的码组。
2、码的最小距离等于非零码的最小码重。
对于长度为n 的二进制线性分组码,它有种2n 可能的码组,从2n 种码组中,可以选择M=2k个码组(k<n )组成一种码。
这样,一个k 比特信息的线性分组码可以映射到一个长度为n 码组上,该码组是从M=2k 个码组构成的码集中选出来的,这样剩下的码组就可以对这个分组码进行检错或纠错。
对于码组长度为n 、信息码元为k 位、监督码元为r =n -k 位的分组码,常记作(n ,k )码,如果满足2r -1≥n,则有可能构造出纠正一位或一位以上错误的线性码。
(2)生成矩阵和校验矩阵线性分组码码空间C 是由k 个线性无关的基底1-k g ,…1g 0g ,张成的k 维n 重子空间,码空间的所有元素(即码字)都可以写成k 个基底的线性组合,即 111001k k C m g m g m g --=+++这种线性组合特性正是线性分组码名称的来历。
显然,研究线性分组的关键是研究基底、子空间和映射规则,可把子空间和映射关系画成如图一所示的图形。
图2.1 码空间与映射k 维k 重信组空间mn 维n 重空间n Vn-k 维n 重对偶空间Dk 维k 重码空间cG H用i g 表示第i 个基底并写成n ⨯1矩阵形式[]01)2()1(,,,,i i n i n i i g g g g g --=再将k 个基底排列成k 行n 列的G 矩阵,得:[](1)(1)(1)1(1)01101(1)11100(1)0100,,,k n k k k n n g g g G g g g g g g g g g -------⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎣⎦ 由于k 个基底即G 的k 个行矢量线性无关,矩阵G 的秩一定等于k ,当信息元确定后,码字仅由G 矩阵决定,因此称这n k ⨯矩阵G 为该()k n ⨯线性分组码的生成矩阵。
基底不是唯一的,生成矩阵也就不是唯一的。
事实上,将k 个基底线性组合后产生另一组k 个矢量,只要满足线性无关的条件,依然可以作为基底张成一个码空间。
不同的基地有可能生成同一个码集,但因编码涉及码集和映射两个因素,码集一样而映射方法不同也不能说是同样的码。
基底的线性组合等效于生成矩阵G 的行运算,可以产生一组新的基底。
利用这点可使生成矩阵具有如下的“系统形式”:[]⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡==---------0001)1(01011)1(10)1(1)1()1)(1(10010001p p p p p p p p p P I G k n k n k k k n k k这里P 是()k n k ⨯-矩阵;k I 是k k ⨯单位矩阵,从而保证了矩阵的秩是K 。
与任何一个()k n ,分组线性码的码空间C 相对应,一定存在一个对偶空间D 。
事实上,码空间基底数k 只是n 维n 重空间全部n 个基底的一部分,若能找出另外k n -个基底,也就找到了对偶空间D 。
既然用k 个基底能产生一个()k n ,分组线性码,那么也就能用k n -个基底产生包含kn -2个码字的()k n n -,分组线性码,称()k n n -,码是()k n ,码的对偶码。
将D 空间的k n -个基底排列起来可构成一个()n k n ⨯-矩阵,将这个矩阵称为码空间C 的校验矩阵H ,而它正是()k n n -,对偶码的生成矩阵,它的每一行是对偶码的一个码字。
C 和D 的对偶是互相的,G 是C 的生成矩阵又是D 的校验矩阵,而H 是D 的生成矩阵,又是C 的校验矩阵。
由于C 的基底和D 的基底正交,空间C 和空间D 也正交,它们互为零空间。
因此,()k n ,线性码的任意码字c 一定正交于其对偶码的任意一个码字,也必定正交于校验矩阵H 的任意一个行矢量,即0=T cH 。
由于生成矩阵的每个行矢量都是一个码字,因此必有0=T GH 。
对于生成矩阵符合“系统形式”G 的系统码,其校验矩阵也是规则的,必为:[]k n T I P H --=上式中的负号在二进制码情况下可以省略,因为模2减法和模2加法是等同的。
(3)信息码元及对应码字的关系(n ,k )码字中的任一码字i c ,均可以由这组基底的线性组合生成,即[]12i i n n n k c m G m m m G ---=式中[]12i n n n k m m m m ---=的是k 个信息元组的信息组,因此其信息码元及对应码字的关系如表一所示:表 信息码元及对应码字关系2. 线性分组码的伴随式与译码(1)码的距离及检错能力两个码字之间,对应位取之不同的个数,称为汉明距离,用d 表示。
一个码的最小距离min d 定义为{}(,)min min ,,,(,)ci cj i j d d j j c c n k =≠∈,两个码字之间的距离表示了它们之间差别的大小。
距离越大,两个码字的差别越大,则传送时从一个码字错成另一码字的可能性越小。
码的最小距离愈大,其抗干扰能力愈强。
任何最小距离min d 的线性分组码,其检错能力为()1min -d 纠错能力t 为⎥⎦⎤⎢⎣⎡-=21min d INT t 最小距离min d 表明码集中各码字差异的程度,差异越大越容易区分,抗干扰能力自然越强,因此成了衡量分组码性能最重要的指标之一。
估算最小距离是纠错码设计的必要步骤,最原始的方法是逐一计算两两码字间距离,找到其中最小者。
含k2个码字的码集需计算()2122-kk 个距离后才能找出min d ,费时太多,实用中还有一些更好更快的方法。
线性分组码的最小距离等于码集中时非零码字的最小重量,即 (){}i C w d min min = 0≠∈i i C C C 及式中,符号()i w c 表示i c 重量(1的个数)。
这里利用了群的封闭性,由于分组码是群码,任意两码字之和仍是码字,即C C C C i k j ∈=⊕。
因此任意两码字间的 汉明距离其实必是另一码字的重量,表示为成下面公式形式。
()()()(){}(){}i k j i k j k i C w C C d C w C C w C C d m in ,m in ,,==⊕=。
于是可将最小距离问题转化为寻找最轻码字问题,含k 2个码字的码集仅需计算k 2次。
码的检错能力取决于码的最小距离,但还需说明的另一点是码的总体检错能力不仅仅与min d 有关。
检错能力t 只是说明距离t 的差错一定能纠,并非说距离大于t 的差错一定不能纠。
事实上,如果有2k 个码子,就存在()221k k - 个距离,这并非相等的。
比如最小距离min 3d = ,检错力1t = ,是由码21C C 的距离决定, 只要2C 朝1C 方向偏差大于1就会出现译码差错;然而若2C 朝3C 方向偏差3,译码时仍可正确地判断为2C 而非3C 。
可见,总体的、平均的纠错能力不但与最小距离有关,而且与其余码距离或者说与码子的重量分布特性有关,把码距(码重)的分布特性称为距离(重量)谱,其中最小的重量就是min d 。
正如信息论各符号等概时熵最大一样,从概念上可以想象到:当所有码距相等时是(重量谱为线谱)码的性能应该最好;或者退一步说,当各码距相当不大时(重量谱为窄谱)性能应该叫好。
事实证明确实如此,在同样的min d 条件下,窄谱的码一般比宽谱的码更优。
纠错重量谱的研究具有理论与现实意义,不仅仅是计算各种译码差错概率的主要依据,也是研究码的结构、改善码集内部关系从而发现新的好码的重要工具。
但目前除了少数几类码如汉明码、极长码等的重量分布已知外,还有很多码的重量分布并不知道,距离分布与性能之间确切的定量关系对于大部分码而言尚在进一步研究当中,特别当n 和k 较大时,要得出码重分布是非常困难的。
重量谱可以如下多项式来表示,称为重量算子,即 ()234012341nnn n i i A x A A x A x A x A x A x A x ==+++++=∑式中的含义:在码长n 的码集里,包括重量为0的码子0A 个(线性码一定包含一个重量为0的全0码),码重为1的码字1A 个,,重量为n 的码字n A 个。
(2)伴随式与译码 码字()1210,,,,n C c c c c -=在传输过程中受到各种干扰,接收端收码()1210,,,,n R r r r r -=已不一定等于发码C ,两者间的差异就是差错,差错是多样化的,我们定义差错的式样为差错图样E ,即()()110111100,,,,,,n n n E e e e R C r c r c r c ---==-=---对于二进制码,模2减等同模2加,因此有 mod 2E R C R C E=+=+及利用码字与校验矩阵的正交性T CH ,可检验收码R 是否错误,即()000T T T T T T RH C E H CH EH EH EH =⎧=+=+=+=⎨≠⎩ 定义T RH 运算结果为伴随式S ,即 ()110,,,T T n k S s s s RH EH --===可见,虽然R 本身与发码有关,但乘以T H 后的伴随式T T RH S EH == 仅与差错图E 有关,只反映信道对码字造成怎样的干扰而与发什么码C 无关了。