通信原理课程设计QPSK信号的调制解调.docx
《通信原理课程设计QPSK信号的调制解调.docx》由会员分享,可在线阅读,更多相关《通信原理课程设计QPSK信号的调制解调.docx(16页珍藏版)》请在冰豆网上搜索。
通信原理课程设计QPSK信号的调制解调
一、QPSK信号的调制解调
一、题目要求
利用matlab软件设计并仿真下面的无线通信系统
要求:
1、输入信号为比特流形式,比特速率通常为100kbps数量级。
2、载波频率自定。
通常为MHz数量级。
3、信道为多径信道(仿真中2径即可,信道中噪声为加性高斯白
噪声。
4、信噪比自行设定。
5、画出图中各点波形。
6、画出系统误码率与接收端信噪比SNR的关系(蒙特卡洛仿真。
7、在给定信噪比的情况下,分析多径延时大小对系统性能有没有影
响?
画出系统误码率与多径时延大小之间的关系。
二、设计思路
1、利用matlab随机函数产生随机0、1的数字信号,频率为100kbps,变成极性码,把得到的数字信号分成两路进行正交调制。
2、载波频率选择为1Mhz,进行调制,即每个码元由10个正弦波调制,每个码元选取100个点表示,即抽样频率为10Mhz。
3、相乘调制后得到的两路信号相加得到的信号,通过天线发送出去。
4、在无线信道中会有高斯白噪声和信号的多径(仿真中2径时延产生影响。
5、接收端接收到信号后,进行带通滤波,采用巴特沃斯滤波器,将带外噪声滤掉。
6、对信号进行解调,分别乘以cos和sin两路本地载波,得到的结果
用低通滤波器滤波,得到解调的信号。
7、对解调得到的信号判决,大于零为+1,小于零为-1,传给信宿。
8、对比判决后的信号和原始极性码,求出误码率。
9、改变在无线信道中加入的高斯白噪声和信号的信噪比,从-19dB到10Db,分别对应的误码率,画出曲线。
10、改变多径(二径时延,从一个dt到20dt,分别对应的误码率,画出曲线。
三、模块设计
1、发送端产生1000个随机0、1数字信号,并按照奇偶分成两路,a点波形
%%%%%%%%%%%%%%%%%%朱尤祥09通信三班090610131%%%%%%%%%%%%%%%%%%%
%f=100000,信号频率100kbps;fc=1000000;载频1Mhz
clearall
num=1000;%取num个抽样点
n=100;%每个间隔取n个点,来恢复波形和延时
f=100000;
fc=1000000;
dt=1/f/n;%时间间隔即为每个码元宽度除以n
t=0:
dt(1/f*num-dt;%总码元时间
N=length(t;%长度
t1=0:
dt(1/f*num/2-dt;%串并转换,时间减半
m=1;%延时
t2=0:
dt(1/f*num/2+(m-1*dt;%串并之后,延时m
forrecycle=1:
10
data=randint(1,num,2;%num个抽样点
datanrz=data.*2-1;%变成极性码
%串并转换,将奇偶位分开
idata=datanrz(1:
2(num-1;%奇
qdata=datanrz(2:
2:
num;%偶
ich=zeros(1,num*n/2;%初始化波形信号
fori=1:
num/2
ich((i-1*n+1:
i*n=idata(i;
end
figure(1
subplot(121
plot(t1,ich;axis([0,1/f*num/2,-1.5,1.5];title(‘数字信源的一路信号,奇数’;
forii=1:
N/2
a(ii=cos(2*pi*fc*t(ii;
end
idata1=ich.*a;%奇数位的抽样值与cos函数相乘得到其中的一路信号
qch=zeros(1,num*n/2;forj=1:
num/2
qch((j-1*n+1:
j*n=qdata(j;end
subplot(122
plot(t1,qch;axis([0,1/f*num/2,-1.5,1.5];title(‘数字信源的另一路信号,偶数’;forjj=1:
N/2
b(jj=sin(2*pi*fc*t(jj;end
qdata1=qch.*b;%偶数位的抽样值与sin函数相乘得到其中的另一路信号
1
012345
x10
-3
数字信源的一路信号,奇数012345
x10
-3
数字信源的另一路信号,偶数
2、载波频率为1Mhz,为b点的波形(放大后
figure(2
carrier=cos(2*pi*fc*t1;
plot(t1,carrier;title(‘fc=1Mhz的载波’;
2
fc=1Mhz的载波
x10-4
3、将两路信号相加,得到发送端发送的信号,即c点波形(放大后s=idata1+qdata1;%将奇偶相加
figure(3
plot(t1,s,title(‘调制信号,即是两路合并发送的信号’
3
调制信号,即是两路合并发送的信号
x10-4
4、在信道中加入了高斯白噪声和由于二径时延信号的合成,直射波的幅度取0.7,反射波的幅度取0.3。
%%%%%%%%%%信道的二径与噪声之后接收到得信号x1%%%%%%%%%%%%%%%
a1=0.7;%直射波的衰减
a2=0.3;%反射波的衰减
%%%%%%%%%时延m*dt
s1=a1*[szeros(1,m];
s2=a2*[zeros(1,ms];
x=s1+s2;%二径引起的变化
x1=awgn(x,10%叠加高斯白噪声,信噪比SNR为10dB
figure(4
plot(t2,x1;title(‘在多径和高斯信道下的接收波形’
4
在多径和高斯信道下的接收波形
00.511.522.533.544.55
x10-3
5、用巴特沃斯带通滤波器对接收端得到的信号进行滤波,滤掉带外噪声。
%%%%%%%%%%%%%%%%%接收端的带通滤波器x2%%%%%%%%%%%%%%%%
w1=2*dt*(fc-f;
w2=2*dt*(fc+f;
[c,d]=butter(4,[w1,w2],’bandpass’;%4阶butterworth滤波器
x2=filter(c,d,x1;
figure(5
plot(t2,x2;title(‘信号通过带通滤波器’;
5
信号通过带通滤波器
00.511.522.533.544.55
x10-3
6、解调信号并低通滤波
%%%%%%%%%%%%%%%%%信号的解调%%%%%%%%%%%%%%%%
w=2*dt*f;
[p,q]=butter(4,w,’low’;%4阶butterworth低通滤波器
%%%%%%%%%%%%%%%%%%%
x3=cos(2*pi*fc*t2.*x2;%乘以载波
x4=filter(p,q,x3;
figure(6
subplot(121
plot(t2,x4;axis([0,1/f*num/2,-1,1];title(‘QPSK解调并经过滤波得到的一路信号’%%%%%%%%%%%%%%%%%%%
x5=sin(2*pi*fc*t2.*x2;%乘以与之前正交的载波,解调另一半码元串
x6=filter(p,q,x5;
subplot(122
plot(t2,x6;axis([0,1/f*num/2,-1,1];title(‘QPSK解调并经过滤波得到的另一路信号’
6
x10-3QPSK解调并经过滤波得到的一路信号x10-3
QPSK解调并经过滤波得到的另一路信号
%%%%%%%%%%%%%%%%%系统的误码率%%%%%%%%%%%%%%%
decoder_i=zeros(1,(num/2;%初始化奇
decoder_q=zeros(1,(num/2;%初始化偶
forg=1:
num/2
decoder_i(g=x4((n+1+(g-1*n;%对奇数列采样
end
forh=1:
num/2
decoder_q(h=x6((n+1+(h-1*n;%对偶数列采样
end
%采样后进行并串转换
decoder=zeros(1,num;
decoder(1:
2(num-1=decoder_i;
decoder(2:
2:
num=decoder_q;
%把抽样得到的decoder转化为极性码
forij=1:
num
if(decoder(ij>0
else
decoder(ij=-1;
end
end
%比较decoder和datanrz,求误码率
correct_code=0;%正确接收的码元
forij=1:
num
if(decoder(ij==datanrz(ij
correct_code=correct_code+1;
end
end
mistake_code=num-correct_code;%误码
error_rate(recycle=mistake_code/num;%误码率
end
miscode=mean(error_rate;
通过每次仿真1000个码元,循环10次,共10000个码元,取平均值,得到miscode为4
⨯。
210-
7、改变信道中信号与高斯白噪声的信噪比,从-19dB到10dB,分别
对应着不用的误码率,画出曲线。
%%%%%%%%%%%%%%%%%%系统的误码率与接收端信噪比SNR的关系%%%%%%%%%%%%%%%%%%
SNR=-20;%初值-19dB
errorrate=zeros(1,30;%初始化对应的误码率
fortimes=1:
30
SNR=SNR+1;
x1=awgn(x,SNR%叠加高斯白噪声,信噪比SNR
[c,d]=butter(4,[w1,w2],’bandpass’;%4阶butterworth滤波器
x2=filter(c,d,x1;
x3=cos(2*pi*fc*t2.*x2;%乘以载波
x4=filter(p,q,x3;
x5=sin(2*pi*fc*t2.*x2;%乘以与之前正交的载波,解调另一半码元串
x6=filter(p,q,x5;
decoder_i=zeros(1,(num/2;%初始化奇
decoder_q=zeros(1,(num/2;%初始化偶
forg=1:
num/2
decoder_i(g=x4((n+1+(g-1*n;
end
forh=1:
num/2
decoder_q(h=x6((n+1+(h-1*n;
end%抽样后进行并串转换
decoder=zeros(1,num;
decoder(1:
2(num-1=decoder_i;
decoder(2:
2:
num=decoder_q;%把抽样得到的decoder转化为极性码,与原始的信号进行比较,求误码率
forij=1:
num
if(decoder(ij>0
else
decoder(ij=-1;
end
end%转换为极性码
correct_code=0;%正确接收的码元
forij=1:
num
if(decoder(ij==datanrz(ij
correct_code=correct_code+1;
end
end
mistake_code=num-correct_code;%误码
error_rate=mistake_code/num;%误码率
errorrate(times=error_rate;
end
figure(7
plot([-19:
10],errorrate;title(‘系统的误码率与接收端信噪比SNR的关系’;xlabel(‘接收端信噪比SNR/dB’;ylabel(‘系统的误码率’;
7
系统的误码率与接收端信噪比SNR的关系
接收端信噪比SNR/dB系统的误码率
从图中可以直观的看出随着在无线信道中加入的高斯白噪声的大小(通过改变awgn函数中的信噪比来实现,误码率也在改变;总体趋势是,接收端信噪比越高,解调得到的信号的误码率就越低,反之,接收端信噪比越低,误码率就会越高。
这个结果也符合正常规律。
8、改变由二径的时延差,从单位dt到20dt,分别对应误码率,画
出曲线。
%%%%%%%%%%%%%%%%系统误码率与多径时延大小之间的关系%%%%%%%%%%%%%%%%
%延时m*dt
m=0;
fortimes=1:
20
m=m+1;
t3=0:
dt(1/f*num/2+(m-1*dt;
s1=a1*[szeros(1,m];
s2=a2*[zeros(1,ms];
x=s1+s2;%二径引起的变化
x1=awgn(x,10%叠加高斯白噪声,信噪比SNR为10dB
[c,d]=butter(4,[w1,w2],’bandpass’;%4阶butterworth滤波器
x2=filter(c,d,x1;
x3=cos(2*pi*fc*t3.*x2;%乘以载波
x4=filter(p,q,x3;
x5=sin(2*pi*fc*t3.*x2;%乘以与之前正交的载波,解调另一半码元串
x6=filter(p,q,x5;
decoder_i=zeros(1,(num/2;%初始化奇
decoder_q=zeros(1,(num/2;%初始化偶
forg=1:
num/2
decoder_i(g=x4((n+(g-1*n;
end
forh=1:
num/2
decoder_q(h=x6((n+(h-1*n;
end%抽样后进行并串转换
decoder=zeros(1,num;
decoder(1:
2(num-1=decoder_i;
decoder(2:
2:
num=decoder_q;%把抽样得到的decoder转化为极性码,与原始的信号进行比较,求误码率
forij=1:
num
if(decoder(ij>0
decoder(ij=1;
else
decoder(ij=-1;
end
end%转换为极性码
correct_code=0;%正确接收的码元
forij=1:
num
if(decoder(ij==datanrz(ij
correct_code=correct_code+1;
end
end
mistake_code=num-correct_code;%误码
error_rate=mistake_code/num;%误码率
errorrate(times=error_rate;
end
figure(8
plot([1:
20],errorrate(1:
20;title(‘系统误码率与多径时延大小之间的关系’;
xlabel(‘多径时延’;ylabel(‘系统误码率’;
8
024681012
14161820
系统误码率与多径时延大小之间的关系
多径时延系统误码率
可以看出在一定的范围内随着时延的增加,误码率也在增加,但在时延继续增加会出现误码率变低,并且随着抽样率存在一定范围的周期性.
四、心得体会
通过本次matlab仿真QPSK调制通信系统,不但让我对matlab的掌握更深一步,学习了更多的函数;而且对QPSK调制有更加深入的了解,以及整个通信系统的结构。
在QPSK整个系统的设计过程中,让我认识到,要想更加深入的学习理解知识,就必须理论联系实际,提高自己动手编程能力。