摘要本文主要利用MATLAB通信系统仿真模型库进行汉明码建模仿真,并调用通信系统功能函数对外界输入的信息进行汉明码的编、译码,绘制时域波形及误码率与信噪比关系曲线图。在此基础上,对汉明码的性能进行分析,得出汉明码能降低噪声干扰的结论。Hamming码中文称作汉明码。汉明码是由汉明于1950年提出的,是一种能够自动检测并纠正一位错码的线性纠错码,它的突出特点是:编译码电路简单,易于硬件实现;用软件实现编译码算法时,软件效率高;而且性能比较好.关键词:MATLAB汉明码编码译码目录一、前言.......................................................................1二、设计原理...................................................................22.1纠错编码原理..........................................................22.2汉明码编码............................................................22.2.1汉明码的定义......................................................22.2.2汉明码的构造特点.................................................22.2.3汉明码编码的主要算法............................................32.3汉明码的构造原理......................................................32.4监督矩阵H..............................................................42.5生成矩阵G..............................................................52.6校正子(伴随式)......................................................6三、汉明码编码的设计...........................................................73.1汉明码编码方法.........................................................73.2编码流程图.............................................................83.3汉明码编码程序设计....................................................93.4汉明码编码仿真波形....................................................9四、汉明码的译码器的设计......................................................104.1汉明码译码方法........................................................104.2译码程序设计的流程图...................................................124.3汉明码译码程序的设计.................................................144.4汉明码译码仿真波形...................................................15五、总结....................................................................16六、参考文献.................................................................17附录..........................................................................181一、前言数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。由于乘性干扰引起的码间串扰,可以采用均衡的办法来纠正。而加性干扰的影响则需要用其他办法解决。在设计数字通信系统时,应该首先从合理选择调制制度,解调方法以及发送功率等方面考虑,使加性干扰不足以影响到误码率要求。在仍不能满足要求时,就要考虑采用差错控制措施了。从差错控制角度看,按加性干扰引起的错码分布规律不同,信道可以分为3类,即随机信道,突发信道和混合信道。在随机信道中,错码的出现是随机的,而且错码之间是统计独立的。在突发信道中,错码是成串集中出现的,而且在短促的时间段之间存在较长的无错码区间。把既存在随机错码又存在突发错码的的信道称为混合信道。对于不同类型的信道,应该采用不同的差错控制技术。本次课程设计运用MATLAB进行汉明码的编译码设计与仿真,MATLAB通信工具箱是一套用于在通信领域进行理论研究、系统开发、分析设计和仿真的专业化工具软件包。MATIAB通信工具箱由两大部分组成:通信系统功能函数库和SIMULINK通信系统仿真模型库。MATLAB通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数、函数功能覆盖了现代通信系统的各个方面。这些函数包括:信号源产生函数、信源编码/解码函数、纠错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。以纠错控制编解码函数为例:函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED—SOLOMON)、卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。2二、设计原理2.1纠错编码原理我们把信息码分组,为每组信息码附加若干监督码的编码称为分组码(blockcode).在分组码中,监督码元仅监督本码组中的信息码元。分组码一般用符号(n,k)表示,其中n是码组的总位数,又称为码组的长度(码长),k是码组中信息码元的数目,n-k=r为码组中的监督码元的数目,或者称为监督位数目,分组码的结构如图1所示,图中前k位为信息位,后面附加r个监督位。其中an-1到ar为k个信息位,ar-1到a0为r个监督位。an-1an-2………arar-1………ao图1分组码的结构在分组码中,把码组中“1”的个数称为码组的重量,简称码重。把两个码组中对应位上数字不同的位数称为码组的距离,简称为码距,码距又称为汉明距离。我们把某种编码中各个码组之间距离的最小值称为最小码距(d0)。一种编码的最小距离的大小直接关系着这种编码的检错与纠错能力:(1)为检测e个错码,要求最小码距d0大于等于e+1;(2)为了纠正t个错码,要求最小码距d0大于等于2t+1;(3)为纠正t个错码同时检测e个错码,要求最小码距d0大于等于e+t+1(et).2.2汉明码编码2.2.1汉明码的定义若一致监督矩阵H的列是由不全为0且互不相同的所有二进制m(m≥2的正整数)重组成,则由此H矩阵得到的线性分组码称为[2m-1,2m-1-m,3]汉明码。2.2.2汉明码的构造特点1).绐定一个m,我们由二进制m重组成线性分组码的监督矩阵H,由二进制m重来标定一个发生错误的位置。由此可知,二进制m重共有2种位组合,去掉一个全为0的位组合,则余下共有2m-1种位组合。故汉明码的最大码长n=2m-1。32).由上面分析,我们可以知道:m即是汉明码监督位的位数。故一个汉明码中,信息位的位数k=n—m=2m-1-m3).汉明码的距离为3,因此可以纠正1位错误,检出2位错误。2.2.3汉明码编码的主要算法汉明码的编码就是如何根据信息位数k,求出纠正一个错误的监督矩阵H,然后根据H求出信息位所对应的码字。构造汉明码监督矩阵H的方法很多,这里仅介绍一种。1)根据已知的信息位数k,从汉明不等式中求出校验位数m=n-k;2)在每个码字C:(C1,C2,⋯,C2m-1)中,用c02,c12,cn-12作为监督位,剩下的位作为信息位;3)用二进制数字表示2m-1列,得到2m-1列和m行监督矩阵H;4)用3步的H形成HCT=0,从而得出m个监督方程;5)将已知的信息代入方程组,然后求出满足上述方程组的监督位c(i=0,1,⋯,m一1)。2.3汉明码的构造原理线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若监督码元是按线性关系模2相加而得到的,则称其为线性分组码。一般来说,若汉明码长为n,信息位数为k,则监督位数r=n-k.若希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求:nr12或112rkr,现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为A=[6a,012345,,,,,aaaaaa],前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组码产生监督元:346035614562aaaaaaaaaaaa(式2.3.1)显然,这3个方程是线性无关的。代入上述公式可得(7,4)码的全部码组,如表1所示。表1(7,4)汉明码的全部码组4信息位a6a5a4a3监督位a2a1a0信息位a6a5a4a3监督位a2a1a00000000100011100010111001100001010110100100011110101100101001101100001010110111010100110011111010001110001111111由上表可知:(7,4)汉明码的最小码距0d=3,它能纠1位错或检2位错。由此可见,汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距0d=3,码长n与监督位r满足关系式:nr12,说明上述所说的(7,4)线性分组码就是汉明码。同时,由于码率nrnrnnk1)(,故当n很大和r很小时,码率接近1,可见,汉明码是一种高效码。2.4监督矩阵H式(2.3.1)所示的(7,4)汉明码的监督方程可以改写为:000034613562456aaaaaaaaaaaa(式2.4.1)用矩阵的形式可以将上式表示为:0001011001110101011101000123456aaaaaaa(式2.4.2)5上式可以简记为:TTAH0或0AHT(式2.4.3)式中101100111010101110100H,0123456aaaaaaaA,0=[000]右上标“T”表示将矩阵转置。例如,HT是H的转置,即HT的第一行为H的第一列,HT的第二行为H的第二列等等。其中,H成为监督矩阵,只要监督矩阵H给定,编码时信息位和监督位的关系也就随即确定下来了。2.5生成矩阵G上面汉明码例子中的监督位公式为000034613562456aaaaaaaaaaaa(式2.5.1)也可改写成矩阵形式:3456012101111011110aaaaaaa(式2.5.2)或者写成Qaaaaaaaaaaa34563456012011101110111(式2.5.3)式中,Q为一个k*r阶矩阵,它为P的转置,