通信原理课程设计报告书课题名称 基于MATLAB 的(7,4)汉明码编译码设计与仿真结果分析姓 名 学 号学 院 通信与电子工程学院专 业 通信工程指导教师※※※※※※※※※ ※※ ※※ ※※2009级通信工程专业通信原理课程设计2011年 12月 23日基于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 矩阵根据(7, 4)汉明码可知一般有现在将上面它改写为上式中已经将“⊕”简写成“+”。
上式可以表示成如下矩阵形式:⎪⎩⎪⎨⎧=⊕⊕⊕=⊕⊕⊕=⊕⊕⊕000034613562456a a a a a a a a a a a a ⎪⎭⎪⎬⎫=⋅+⋅+⋅+⋅+⋅+⋅+⋅=⋅+⋅+⋅+⋅+⋅+⋅+⋅=⋅+⋅+⋅+⋅+⋅+⋅+⋅010011010010101100010111012345601234560123456a a a a a a a a a a a a a a a a a a a aa上式还可以简记为H ⋅ A T= 0T或 A ⋅ H T= 0式中A = [a 6 a 5 a 4 a 3 a 2 a 1 a 0]0 = [000]右上标“T”表示将矩阵转置。
例如,H T 是H 的转置,即H TH的第一列,H T 的第二行为H 的第二列等等。
将H 称为监督矩阵。
只要监督矩阵H 给定,编码时监督位和信息位的关系就完全确定了。
H 矩阵的性质:1) H 的行数就是监督关系式的数目,它等于监督位的数目r 。
H 的每行中“1”的位置表示相应码元之间存在的监督关系。
例如,H 的第一行1110100表示监督位a 2是由a 6 a 5 a 4之和决定的。
H 矩阵可以分成两部分,例如式中,P 为r ⨯ k 阶矩阵,I r 为r ⨯ r 阶单位方阵。
我们将具有[P I r]形式的H 矩阵称为典型阵。
2) 由代数理论可知,H 矩阵的各行应该是线性无关的,否则将得不到 r 个线性无关的监督关系式,从而也得不到 r 个独立的监督位。
若一矩阵能写成典型阵形式[P I r],则其各行一定是线性无关的。
因为容易验证[I r]的各行是线性无关的,故[P I r]的各行也是线性无关的。
3.1.2 G 矩阵: 上面汉明码例子中的监督位公式为)(模20001011001110101011101000123456⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡a a a a a a a ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=101100111010101110100H []r PI H =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=001101101011011001110 ⎪⎨⎧⊕⊕=⊕⊕=35614562a a a a a a a a也可以改写成矩阵形式: 或者写成式中,Q 为一个k ⨯ r 阶矩阵,它为P 的转置,即 Q = P T上式表示,在信息位给定后,用信息位的行矩阵乘矩阵Q 就产生出监督位。
我们将Q 的左边加上1个k ⨯ k 阶单位方阵,就构成1个矩阵GG 称为生成矩阵,因为由它可以产生整个码组,即有或者因此,如果找到了码的生成矩阵G[I k Q ]形式的生成矩阵称为典型生成矩阵。
由典型生成矩阵得出的码组A 中,信息位的位置不变,监督位附加于其后。
这种形式的码称为系统码。
G 矩阵的性质:1) G 矩阵的各行是线性无关的。
因为由上式可以看出,任一码组A 都是G 的各行的线性组合。
G 共有k 行,若它们线性无关,则可以组合出2k 种不同的码组A ,它恰是有k 位信息位的全部码组。
若G 的各行有线性相关的,则不可能由G 生成2k 种不同的码组了。
2) 实际上,G 的各行本身就是一个码组。
因此,如果已有k 个线性无关的码组,则可以用其作为生成矩阵G ,并由它生成其余码组。
3.1.3 校正子S当接收码组有错时,E ≠ 0,将B 当作A 代入公式(A ⋅ H T = 0)后,该式不一定成立。
在错码较多,已超过这种编码的检错能力时,B 变为另一许用码⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡3456012101111011110a a a a a a a [][][]Q 34563456012011101110111a a a a a a a a a a a =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=[]⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡==0110001101001011001001111000 Q G k I [][]G ⋅=34560123456a a a a a a a a a a a GA ⋅=][3456a a a a组,则该式仍能成立。
这样的错码是不可检测的。
在未超过检错能力时,上式不成立,即其右端不等于0。
假设这时该式的右端为S ,即B ⋅ H T = S将B = A + E 代入上式,可得S = (A + E ) H T = A ⋅ H T + E ⋅ H T 由于A ⋅ H T = 0,所以S = E ⋅ H T式中S 称为校正子。
它能用来指示错码的位置。
S 和错码E 之间有确定的线性变换关系。
若S 和E 之间一一对应,则S 将能代表错码的位置。
3.2 (7,4)汉明码的构造原理在偶数监督码中,由于使用了一位监督位a 0,它和信息位a n-1 … a 1一起构成一个代数式:在接收端解码时,实际上就是在计算若S = 0,就认为无错码;若S = 1,就认为有错码。
现将上式称为监督关系式,S 称为校正子。
由于校正子S 只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。
若监督位增加一位,即变成两位,则能增加一个类似的监督关系式。
由于两个校正子的可能值有4中组合: 00,01,10,11,故能表示4种不同的信息。
若用其中1种组合表示无错,则其余3种组合就有可能用来指示一个错码的3种不同位置。
同理,r 个监督关系式能指示1位错码的(2r – 1)个可能位置。
一般来说,若码长为n ,信息位数为k ,则监督位数r =n -k 。
如果希望用r 个监督位构造出r 个监督关系式来指示1位错码的n 种可能位置,则要求然后根据(7,4)汉明码的编码原理,画出程序设计的流程图:021=⊕⊕⊕--a a a n n 021a a a S n n ⊕⊕⊕=-- 1212++≥≥-r k nr r或图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 10 1 0 0 1 1 00 0 1 0 1 0 10 0 0 1 0 1 1 ];%监督矩阵H=[1 1 1 0 1 0 01 1 0 1 0 1 01 0 1 1 0 0 1];A=zeros(7*N,1);编码后信号S=zeros(N,3);%校验子E=zeros(7*N,1);%错误图样I=zeros(7*N,1);%解调纠错后的矩阵NEW=zeros(K,1);%收到的信号a=randsrc(K,1,[0,1]);%信源%编码for k=1:Ncode=[a(4*k-3) a(4*k-2) a(4*k-1) a(4*k)]*G;for l=0:6A(7*k-l)=mod(code(7-l),2);endend%8PSK调制Xa=pskmod(A,Q);%信道传输加噪Xb=awgn(Xa,SNR);%解调B=pskdemod(Xb,Q);%编码for n=1:NM=7*n-6;Z=4*n-3;T=7*n-3;V=4*n;L=7*n;s=B(M:L,1)'*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 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]';endP=B(M:L,1)+E(M:L,1);I(M:L,1)=mod(P,2);NEW(Z:V,1)=I(M:T,1);end[num(SNR,:),ber(SNR,:)]=biterr(NEW,a); endplot(num,'b:s'); %画出误比特数xlabel('信噪比');ylabel('误比特数');figureplot(ber,'k-*'); %画出误比特率 xlabel('信噪比'); ylabel('误比特率');5、设计结果及分析5.1通过对以上程序的编译运行仿真可以得到以下两个仿真图。
x 104信噪比误比特数图2 汉明码译码误比特数图0246810121416182000.050.10.150.20.250.30.350.40.450.5信噪比误比特率图3 汉明码译码误比特率图5.2 编码后信号A 与经过校验子S 校验后译码得到的信号截图图 4 编码后信号A 的截图图5 译码得到的信号截图5.3 仿真结果分析(1)观察图2和图3我们可以看到误比特数和误比特率随信噪比的增加而减小,并最后趋于0.由图4和图5,再联系前面校正子s与各码元之间的对应关系,我们可以发现校正子s的重要作用。