Lucy 2013.10.8
一.准备工作
1.弄清BPSK调制的误码率性能,调制的每个步骤都要理解,并能够用matlab程序实现。
2.了解汉明码的编解码原理
二.汉明码编解码的原理
为了纠正一位错码,在分组码中最少要加入的监督位数是我们一直考虑的问题。从提高编码效率的思想出发进行研究,产生了汉明码。汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。本程序的主要思想就是对未编码和汉明编码后的信号在BPSK下且有高斯噪声影响下的误码率性能进行比较。 以(7,4)汉明码为例,其主要参数如下:
码长:,这里m=3
信息位:
校验位:,且
最小距离:
其生成矩阵G(前四位为信息位,后三位为冗余位)如下:
系统码可分为消息部分和冗余部分两部分,根据生成矩阵,输出码字可按下式计算:
所以有
信息位 冗余位
由以上关系可以得到(7,4)汉明码的全部码字如下所示。
表2 (7,4)汉明码的全部码字
序号 | | 冗余元 | 序号 | 信息码元 | 冗余元 |
0 | 0000 | 000 | 8 | 1000 | 111 |
1 | 0001 | 011 | 9 | 1001 | 100 |
2 | 0010 | 101 | 10 | 1010 | 010 |
3 | 0011 | 110 | 11 | 1011 | 001 |
4 | 0100 | 110 | 12 | 1100 | 001 |
5 | 0101 | 101 | 13 | 1101 | 010 |
6 | 0110 | 011 | 14 | 1110 | 100 |
7 | 0111 | 000 | 15 | 1111 | 通古斯族111 |
| | | | | | |
(编解码原理也可详见樊昌信版通信原理课本P335)
三.汉明码编码前后在BPSK和高斯噪声下的性能比较的matlab实现详细步骤
1 .为了确保画出的图与理论接近,取信息码元数N=100000,汉明码组中监督码元数r=3,信息码元数数n=7;
2 .利用randint随机产生N行,(n-r)列的只有0和1元素的随机矩阵m三围地图,调用格式为randint(N,n-r,2公与淑婷厨房猛烈进出),2表示产生的整数小于2;
3 .通过encode函数来对码元矩阵m进行汉明码编码产生了新的矩阵m2,调用格式为encode(m,n,n-r);
4 .通过调用pskmod函数来随机矩阵m进行bpsk调制产生新的矩阵m1,调用格式为pskmod(m,2),2表示是二进制的psk调制;
5 .同样通过调用pskmod函数实现对m2矩阵的bpsk调制,调用格式为pskmod(m2,2);
6 .假设接收端的输入信噪比SNRindB是从0到10db;
7 .将假设的输入信噪比从db换算为倍数;
8 .由于SNR=S/N,S是信号功率,N为噪声功率,信号的幅度假设为1,那么S=1/2,那么根据固定的SNR和S便可求出接收端叠加的噪声的功率N,对N进行sqrt运算就可求出叠加上的噪声信号的幅度no1。
9 .利用no1*randn(N,n-r)和no1*randn(N,n)分别来产生N行n-r列和N行n列的高斯噪声;
10.将未汉明码编码的bpsk信号m1叠加上噪声信号得出trx1,将汉明码编码的bpsk信号(注意此时它是N行n列而非(n-r)列)叠加上噪声得出trx2;
11 .通过调用pskdemod函数对trx1和trx2分别进行解调得出解调后的信号y1和y2,调用格式为pskdemod(trx1,2);
12 .对解调出来的y2信号还要进行汉明码解码得到解码信号y3,调用decode函数,格式为沈阳1949decode(y2,网易日记n,n-r);
13 .利用biterr函数来计算出解码后的信号y1(未经汉明码编码)和兴利y3(汉明码编解码)相对于初始码元序列m的错误码元数和误码率,调用格式为[num,rat]=biterr(y1,m)
14:利用for语句重复上述步骤分别得出不同SNR下的误码率;
15:利用semilogy函数分别画出未经汉明码编码和汉明码编码两种情况的SNRindB与误码率rat的函数关系图。
四.举例说明性能分析过程
以(7,4)汉明码为例,程序中为了得到接近理论的曲线,取发送的码元个数N=100000,在这里为了方便举例,先取N=10。
第一步,产生10x4的信号码元序列m
m =
1 0 1 0
1 0 0 0
0 1 0 1
0 1 0 1
1 0 0 0
0 0 1 0
1 1 0 0
0 1 0 0
0 1 1 0
0 1 0 1
第二步,汉明码编码得到码元序列m2
m2 =
0 0 1 1 0 1 0
1 1 0 1 0 0 0
1 1 0 0 1 0 1
1 1 0 0 1 0 1
1 1 0 1 0 0 0
1 1 1 0 0 1 0
1 0 1 1 1 0 0
0 1 1 0 1 0 0
1 0 0 0 1 1 0
1 1 0 0 1 0 1
第三步,分别对汉明码编码前后的两个码元序列m和m2进行bpsk
调制得到m1(未编码的bpsk信号)和m3(编码后的bpsk信号)
m1 =
-1.0000 + 0.0000i 1.0000 -1.0000 + 0.0000i 1.0000