《基于MATLAB的汉明码编译码设计与仿真结果分析》由会员分享,可在线阅读,更多相关《基于MATLAB的汉明码编译码设计与仿真结果分析(13页珍藏版)》请在金锄头文库上搜索。
1、2009级通信工程专业通信原理课程设计通信原理课程设计报告书课题名称基于MATLAB的(7,4)汉明码编译码设计与仿真结果分析姓 名学 号学 院通信与电子工程学院专 业通信工程指导教师 2011年 12月 23日 一、设计任务及要求:设计任务:利用MATLAB编程,实现汉明码编译码设计。理解(7,4)汉明码的构造原理,掌握(7,4)汉明码的编码和译码的原理和设计步骤。并对其性能进行分析。要 求: 通过MATLAB编程,设计出(7,4)汉明码的编码程序,编码后加入噪声,然后译码,画出信噪比与误比特数和信噪比与误比特率的仿真图,然后对其结果进行分析指导教师签名: 2011年12月23日 二、指导教
2、师评语:指导教师签名: 年 月 日 三、成绩 验收盖章 年 月 日 基于MATLAB的(7,4)汉明码编译码设计与仿真结果分析 1 设计目的(1)熟悉掌握汉明码的重要公式和基本概念。(2)利用MATLAB编程,实现汉明码编译码设计。(3)理解(7,4)汉明码的构造原理,掌握(7,4)汉明码的编码和译码的原理和设计步骤。(4)对其仿真结果进行分析。2 设计要求(1)通过MATLAB编程,设计出(7,4)汉明码的编码程序。(2)编码后加入噪声,然后译码,画出信噪比与误比特数和信噪比与误比特率的仿真图。(3)然后对其结果进行分析。3 设计步骤3.1 线性分组码的一般原理线性分组码的构造3.1.1 H
3、矩阵根据(7, 4)汉明码可知一般有 (1)现在将上面它改写为(2)上式中已经将“”简写成“+”。 上式可以表示成如下矩阵形式:(3)上式还可以简记为(4)H AT = 0T 或A HT = 0式中(5)(6)A = a6 a5 a4 a3 a2 a1 a0(7)0 = 000右上标“T”表示将矩阵转置。例如,HT是H的转置,即HT的第一行为H的第一列,HT的第二行为H的第二列等等。将H称为监督矩阵。 只要监督矩阵H给定,编码时监督位和信息位的关系就完全确定了。 H矩阵的性质: 1) H的行数就是监督关系式的数目,它等于监督位的数目r。H的每行中“1”的位置表示相应码元之间存在的监督关系。例如
4、,H的第一行1110100表示监督位a2是由a6 a5 a4之和决定的。H矩阵可以分成两部分,例如(8)式中,P为r k阶矩阵,Ir为r r阶单位方阵。我们将具有P Ir形式的H矩阵称为典型阵。2) 由代数理论可知,H矩阵的各行应该是线性无关的,否则将得不到 r个线性无关的监督关系式,从而也得不到 r个独立的监督位。若一矩阵能写成典型阵形式P Ir,则其各行一定是线性无关的。因为容易验证Ir的各行是线性无关的,故P Ir的各行也是线性无关的。3.1.2 G矩阵:上面汉明码例子中的监督位公式为(9)(10)也可以改写成矩阵形式:或者写成(11)式中,Q为一个k r阶矩阵,它为P的转置,即 Q =
5、 PT 上式表示,在信息位给定后,用信息位的行矩阵乘矩阵Q就产生出监督位。我们将Q的左边加上1个k k阶单位方阵,就构成1个矩阵G (12)(13)G称为生成矩阵,因为由它可以产生整个码组,即有或者(14)因此,如果找到了码的生成矩阵G,则编码的方法就完全确定了。具有IkQ形式的生成矩阵称为典型生成矩阵。由典型生成矩阵得出的码组A中,信息位的位置不变,监督位附加于其后。这种形式的码称为系统码。 G矩阵的性质:1) G矩阵的各行是线性无关的。因为由上式可以看出,任一码组A都是G的各行的线性组合。G共有k行,若它们线性无关,则可以组合出2k种不同的码组A,它恰是有k位信息位的全部码组。若G的各行有
6、线性相关的,则不可能由G生成2k种不同的码组了。2) 实际上,G的各行本身就是一个码组。因此,如果已有k个线性无关的码组,则可以用其作为生成矩阵G,并由它生成其余码组。3.1.3 校正子S当接收码组有错时,E 0,将B当作A代入公式(A H T = 0)后,该式不一定成立。在错码较多,已超过这种编码的检错能力时,B变为另一许用码组,则该式仍能成立。这样的错码是不可检测的。在未超过检错能力时,上式不成立,即其右端不等于0。假设这时该式的右端为S,即(15)B H T = S(16)将B = A + E代入上式,可得S = (A + E) H T = A H T + E H T(17)由于A HT
7、 = 0,所以S = E H T式中S称为校正子。它能用来指示错码的位置。S和错码E之间有确定的线性变换关系。若S和E之间一一对应,则S将能代表错码的位置。3.2 (7,4)汉明码的构造原理在偶数监督码中,由于使用了一位监督位a0,它和信息位an-1 a1一起构成一个代数式:(18)在接收端解码时,实际上就是在计算(19) 若S = 0,就认为无错码;若S = 1,就认为有错码。现将上式称为监督关系式,S称为校正子。由于校正子S只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。若监督位增加一位,即变成两位,则能增加一个类似的监督关系式。由于两个校正子的可能值有4中组合: 0
8、0,01,10,11,故能表示4种不同的信息。若用其中1种组合表示无错,则其余3种组合就有可能用来指示一个错码的3种不同位置。同理,r个监督关系式能指示1位错码的(2r 1)个可能位置。(20)一般来说,若码长为n,信息位数为k,则监督位数rnk。如果希望用r个监督位构造出r个监督关系式来指示1位错码的n种可能位置,则要求 然后根据(7,4)汉明码的编码原理,画出程序设计的流程图:开始始对(7,4)汉明码进行编码输出编码后的(7,4)汉明码加入高斯白噪声对加入噪声后的(7,4)汉明码进行译码结 束输出译码码后的(7,4)汉明码画出误码率/数与信噪比的仿真图对编码后的(7,4)汉明码进行调制 图
9、1 编码流程图然后根据流程图进行编写程序。4、程序设计clear all;close all;N=30000;K=4*N;%信息长度Q=8;%调制形式num=zeros(20,1);%误比特数ber=zeros(20,1);%误比特率for SNR=1:1:20%生成矩阵G= 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 ;%监督矩阵H=1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1;A=zeros(7*N,1);编码后信号S=zeros(N,3);%校验子E=zeros(7*N,1);%错误
10、图样I=zeros(7*N,1);%解调纠错后的矩阵NEW=zeros(K,1);%收到的信号a=randsrc(K,1,0,1);%信源%编码for k=1:N code=a(4*k-3) a(4*k-2) a(4*k-1) a(4*k)*G; for l=0:6 A(7*k-l)=mod(code(7-l),2); end end%8PSK调制 Xa=pskmod(A,Q);%信道传输加噪 Xb=awgn(Xa,SNR);%解调 B=pskdemod(Xb,Q);%编码 for n=1:N M=7*n-6; Z=4*n-3; T=7*n-3; V=4*n; L=7*n; s=B(M:L,1
11、)*H; S(n,:)=mod(s,2); if S(n,:)=0 0 0 E(M:L,1)=0 0 0 0 0 0 0; elseif S(n,:)=0 0 1 E(M:L,1)=0 0 0 0 0 0 1; elseif S(n,:)=0 1 0 E(M:L,1)=0 0 0 0 0 1 0; elseif S(n,:)=0 1 1 E(M:L,1)=0 0 0 0 1 0 0; elseif S(n,:)=1 0 0 E(M:L,1)=0 0 0 1 0 0 0; elseif S(n,:)=1 0 1 E(M:L,1)=0 0 1 0 0 0 0; elseif S(n,:)=1 1
12、0 E(M:L,1)=0 1 0 0 0 0 0; elseif S(n,:)=1 1 1 E(M:L,1)=1 0 0 0 0 0 0; end P=B(M:L,1)+E(M:L,1); I(M:L,1)=mod(P,2); NEW(Z:V,1)=I(M:T,1);endnum(SNR,:),ber(SNR,:)=biterr(NEW,a);endplot(num,b:s); %画出误比特数xlabel(信噪比);ylabel(误比特数);figureplot(ber,k-*); %画出误比特率xlabel(信噪比);ylabel(误比特率);5、设计结果及分析5.1通过对以上程序的编译运行仿真可以得到以下两个仿真图。图2 汉明码译码误比特数图 图3 汉明码译码误比特率图5