文档介绍:汉明码的实现详细实验报告一、实验目的 1 、掌握线性分组码的编码原理 2 、掌握汉明码编码方法 3 、了解编码对误码性能的改善二、实验内容 1 、自行设置汉明码的参数,生成矩阵,计算所设计出的汉明码; 写出产生( 3, 1 )汉明码的生成矩阵,给出生成码的源程序, 并给出运行结果。 2 、利用 encode 库函数实现汉明编码; 3 、搭建一个通信仿真模块,并给出运行结果,分析汉明码对通信性能的影响; 4 、整理好所有的程序清单或设计模块,并作注释。三、实验原理(一)、汉明码的介绍汉明码是 1951 年由汉明( )提出的能纠正单个错误的线性分组码。它性能良好, 既具有较高的可靠性, 又具有较高的传输效率, 而且编译码电路较为简单, 易于工程实现, 因此汉明码在发现后不久,就得到了广泛的应用。我们的目的是要寻找一个能纠正单个错误, 且信息传输率( 即码率 r=k/n )最大的线性分组码。我们已经知道,具有纠正单个错误能力的线性分组码的最小距离应为 3, 即要求其 H 矩阵中至少任意两列线性无关。要做到这一点, 只要 H 矩阵满足“两无”——无相同的列, 无全零列就可以了。( n, k) 线性分组码的 H 矩阵是一个 nrnkn????)( 阶矩阵, 这里 knr??是校验元的数目。显然,r 个校验元能组成 r2 列互不相同的 r 重矢量, 其中非全零矢量有 12? r个。如果用这 12? r 个非全零矢量作为 H 矩阵的全部列,即令 H 矩阵的列数 12?? rn ,则此 H 矩阵的各列均不相同, 且无全零列, 由此可构造一个纠正单个错误的( n, k) 线性分组码。同时, 12? r是n 所能取的最大值,因为如果 12?? rn ,那么 H 矩阵的 n 列中必会出现相同的两列,这样就不能满足对 H 矩阵的要求。而由于 12?? rn 是n 所能取的最大值,也就意味着码率 R 取得了最大值,即)18 3(12 11????????? rrn rn rnn kR 这样设计出来的码是符合我们的要求的,这样的码就是汉明码。定义若 H 矩阵的列是由非全零且互不相同的所有二进制 r 重矢量组成,则由此得到的线性分组码,称为 GF (2) 上的( 12? r,r r??12 )汉明码。(二)、产生( 3, 1 )汉明码的原理及程序代码本实验要求写出产生( 3, 1) 汉明码的生成矩阵, 由上述可知, 我们的 n=12? r =3, 而 k=r r??12 =1, 由此可得出 r=2. 当 r=2 时,有 3 个非全零的二重矢量: ( 01),( 10),( 11) 构成矩阵???????101 110H 由此得到一个能纠正单个错的( 3, 1) 汉明码。若码字传输中左边第一位出错, 则相应的伴随式)01 (?s 就是 H 矩阵的第一列, 也正好是“1”的二进制表示。同理可知,无论哪一位出错,它对应的伴随式就是该位的二进制表示, 故译码十分方便, 特别适用于计算机内部运算和记忆系统中的纠错。如果要得到系统码形式的 H 矩阵, 只需对上述矩阵进行初等变换交换列即可。???????101 011H , 相应地,生成矩阵 G 为?? 111?G 根据 c u G ? ?生成码字。由此构成的( 3, 1 )汉明码如表 3-1 所示。表 3-1 (