课程设计OQPSK通信系统的matlab仿真分析.docx
《课程设计OQPSK通信系统的matlab仿真分析.docx》由会员分享,可在线阅读,更多相关《课程设计OQPSK通信系统的matlab仿真分析.docx(26页珍藏版)》请在冰豆网上搜索。
![课程设计OQPSK通信系统的matlab仿真分析.docx](https://file1.bdocx.com/fileroot1/2023-5/24/f34822db-22f7-4686-b88e-9abc960757bc/f34822db-22f7-4686-b88e-9abc960757bc1.gif)
课程设计OQPSK通信系统的matlab仿真分析
说明
1.课程设计任务书由指导教师填写,并经专业学科组审定,下达到学生。
2.学生根据指导教师下达的任务书独立完成课程设计。
3.本任务书在课程设计完成后,与论文一起交指导教师,作为论文评阅和课程设计答辩的主要档案资料。
一、课程设计的主要内容和基本要求
1产生等概率且相互独立的二进制序列,画出时域和频域的波形;
2产生均值为0,方差为1的加性高斯随机噪声;
3进行OQPSK调制,画出波形;
4进行误码率分析,并与理论值比较;
5解调OQPSK,画出眼图。
6画出星座图
二、课程设计图纸内容及张数
本实验没有规定的图纸内容,在实验结果中附有本次实验的结果图
三、课程设计应完成的软硬件的名称、内容及主要技术指标
MATLAB7.0
四、主要参考资料
通信原理基础(北京邮电大学出版社)
通信原理(国防工业出版社)樊昌信曹丽娜编著
信号与系统——MATLAB综合实验(高等教育出版社)
MATLAB7辅助信号处理技术与应用(电子工业出版社)飞思科技产品研发中心编著
窗体顶端
窗体底端
OQPSK通信系统的matlab仿真分析
1设计目的和意义
1.对oqpsk进行调制和解调,通过MATLAB编程,掌握MATLAB的使用,熟练掌握OQPSK的调制原理,解调原理。
2.对OQPSK通信系统进行matlab仿真分析,分析起信噪比和差错率。
为现实中通信系统的调制,解调,及信道传输进行理论指导。
2设计原理
1.OPSK的调制
它和QPSK有着同样的相位关系,也是把输入码流分成两路,然后进行正交调制。
随着数字通信技术的发展和广泛应用,人们对系统的带宽、频谱利用率和抗干扰性能要求越来高。
而与普通的QPSK比较,交错正交相移键控的同相与正交两支路的数据流在时问上相互错开了半个码元周期,而不像QPSK那样I、Q两个数据流在时间上是一致的(即码元的沿是对齐的)。
由于OQPSK信号中的I(同相)和Q(正交)两个数据流,每次只有其中一个可能发生极性转换,所以,每当一个新的输入比特进入调制器的I或Q信道时,其输出的OQPSK信号中只有0°、+90°三个相位跳变值,而根本不可能出现180°相位跳变。
所以频带受限的OQPSK信号包络起伏比频带受限的QPSK信号要小,而经限幅放大后的频带展宽也少。
2.OQPSK的基本原理
OQPSK信号的数学公式可以表示为:
⑴OQPSK的调制方法与QPSK类似,仅在一条正交支路上引入了一个比特的延时,以使得两支路的数据不会同时发生变化,降低最大相位跳变。
其中电平映射关系为:
1→1,0→-1.
图3:
OQPSK调制原理框图
经OQPSK调制后,调制点的星相图以及状态转移图如图4所示。
⑵OQPSK解调
OQPSK信号可采用正交相干解调方式解调,其解调原理如图a所示。
由图a可以看出,OQPSK与QPSK信号的解调原理基本相同,其差别仅在于对Q支路信号抽样判决后要延迟Tb/2,这是因为在调制时,Q支路信号在时间上偏移了Tb/2,所以抽样判决时刻也相应偏移了Tb/2,以保证对两支路的交错抽样。
⑶眼图是信号由垂直扫描进入与同周期的水平扫描锯齿波叠加到示波器上时到得图案。
眼图能够反映信号在传输过程中受到的信道噪声影响的强度,眼图越模糊,眼睛越闭合,则说明噪声越强,反之,则说明噪声强度弱,也能说明信道性能更优良。
3设计结果及分析
⑴输入的二进制序列以及串并转换成的上下两路信号,下支路信号已延时,由产生的随机序列可以知道前十个码元为1001001101,映射电平为1-1-11-1-111-11,下面的抽样脉冲与ts=1的矩形脉冲相卷即为输入信号
⑵上下支路分别经过调制后的信号
⑶调制后的信号以及加了高斯白噪声的信号
⑷调制后的信号乘以相干载波后的信号,通过低通滤波器以及经过抽样判决后的信号
(前面上下支路的信号的与判决后的信号对比,可以看出都有延时)
⑸恢复成的最终信号与原始信号的对比
⑹oqpsk的星座图
⑺oqpsk的眼图
⑻oqpsk系统的理论误码率
⑼此次实验中实际误码率
加入不同的噪声进行循环rt=1.8%
(四)matlab程序及其功能
⑴主程序以及注释
clc;
A=1;%载波幅度
fc=2;%载波频率
Ts=1;%码元宽度
fs=1/Ts
B1=fs;%低通滤波器的宽度
N_sample=32;%基带码元抽样点数
N=500;%码元数
dt=Ts/fc/N_sample;%抽样时间间隔
T=N*Ts;%信号持续时间长度
t=0:
dt:
T-dt;%时间向量
Lt=length(t);%时间向量长度
tx1=0;%时域波形图横坐标起点
tx2=10;%时域波形图横坐标终点
ty1=-2;%时域波形图纵坐标起点
ty2=2;%时域波形图纵坐标终点
fx1=-10;%功率谱图横坐标起点
fx2=10;%功率谱图横坐标终点
fy1=-40;%功率谱图纵坐标起点
fy2=25;%功率谱图纵坐标终点
EsN0dB=3:
0.5:
10;%设定EbNo范围
EsN0=10.^(EsN0dB/10);
rt=zeros(1,length(EsN0dB));%初始化误码率向量
M=4;
%产生二进制信源
m=randn(1,N);%产生1到n的随机数
d=sign(m);%将大于0的变为1小于0的变为-1
dd=sigexpand(d,fc*N_sample);%将序列d的周期变为Ts
gt=ones(1,fc*N_sample);%产生宽度为Ts的矩形窗
d_NRZ=conv(dd,gt);%卷积产生基带信号
figure(5);
subplot(2,2,1);
plot(t,dd(1:
Lt));
axis([tx1,tx2,ty1,ty2]);
figure
(1);
subplot(2,4,1);
plot(t,d_NRZ(1:
Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('基带信号时域波形图');
grid;
[f,d_NRZf]=T2F(t,d_NRZ(1:
Lt));%进行傅里叶变换
figure
(1);
subplot(2,4,5);
plot(f,10*log10(abs(d_NRZf).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('基带信号功率谱图');
grid;
figure(4);
subplot(2,2,1);
plot(t,d_NRZ(1:
Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('基带信号时域波形图');
grid;
figure(4);
subplot(2,2,2);
plot(f,10*log10(abs(d_NRZf).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('基带信号功率谱图');
grid;
%串并转换
d1=[];
d2=[];
fori=1:
N
ifrem(i,2)==1
d1((i+1)/2)=d(i);
else
d2(i/2)=d(i);
end
end
dd1=sigexpand(d1,2*fc*N_sample);%功能同上
gt1=ones(1,2*fc*N_sample);
d_NRZ1=conv(dd1,gt1);
figure
(1);
subplot(2,4,2);
plot(t,d_NRZ1(1:
Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('上支路基带信号时域波形图');
grid;
[f1,d_NRZ1f]=T2F(t,d_NRZ1(1:
Lt));
figure
(1);
subplot(2,4,6);
plot(f1,10*log10(abs(d_NRZ1f).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('上支路基带信号功率谱图');
grid;
figure(3);
subplot(2,4,1);
plot(t,d_NRZ1(1:
Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('上支路基带信号时域波形图');
grid;
dd2=sigexpand(d2,2*fc*N_sample);
gt1=ones(1,2*fc*N_sample);
d_NRZ2=conv(dd2,gt1);
d_NRZ2DLY=[-ones(1,N_sample*fc),d_NRZ2(1:
end-N_sample*fc)];
%进行延时,在前面添-1
figure
(1);
subplot(2,4,3);
plot(t,d_NRZ2DLY(1:
Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('下支路基带信号时域波形图');
grid;
[f2,d_NRZ2f]=T2F(t,d_NRZ2DLY(1:
Lt));
figure
(1);
subplot(2,4,7);
plot(f2,10*log10(abs(d_NRZ2f).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('下支路基带信号功率谱图');
grid;
figure(3);
subplot(2,4,5);
plot(t,d_NRZ2DLY(1:
Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('下支路基带信号时域波形图');
grid;
%载波
h1t=A*cos(2*pi*fc*t);
h2t=A*sin(2*pi*fc*t);
figure
(1);
subplot(2,4,4);
plot(t,h1t);
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('载波信号时域波形图');
grid;
[f3,h1tf]=T2F(t,h1t);
figure
(1);
subplot(2,4,8);
plot(f3,10*log10(abs(h1tf).^2/T));
%p=2/T*10*log10(abs(h1tf)为求功率谱的公式
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('载波信号功率谱图');
grid;
%生成OQPSK信号
s_qpsk1=d_NRZ1(1:
Lt).*h1t;%上下支路分别调制
s_qpsk2=d_NRZ2DLY(1:
Lt).*h2t;
figure
(2);
subplot(2,2,1);
plot(t,s_qpsk1);
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('上支路频带信号时域波形图');
grid;
[f4,s_qpsk1f]=T2F(t,s_qpsk1);
figure
(2);
subplot(2,2,3);
plot(f4,10*log10(abs(s_qpsk1f).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('上支路频带信号功率谱图');
grid;
figure
(2);
subplot(2,2,2);
plot(t,s_qpsk2);
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('下支路频带信号时域波形图');
grid;
[f5,s_qpsk2f]=T2F(t,s_qpsk2);
figure
(2);
subplot(2,2,4);
plot(f5,10*log10(abs(s_qpsk2f).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('下支路频带信号功率谱图');
grid;
s_oqpsk=s_qpsk1+s_qpsk2;%两路信号相加得到调制后的信号
figure(8);
subplot(2,2,1);
plot(t,s_oqpsk);
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('已调信号时域波形图');
grid;
[f6,s_oqpskf]=T2F(t,s_oqpsk);
figure(8);
subplot(2,2,3);
plot(f6,10*log10(abs(s_oqpskf).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('已调信号功率谱图');
grid;
%信道加入高斯白噪声进行接收解调
%产生高斯白噪声
m=1;
p1=-10;
noise=wgn(m,Lt,p1);
%接收信号
y_qpsk=s_oqpsk+noise;
figure(8);
subplot(2,2,2);
plot(t,y_qpsk);
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('接收信号时域波形图');
grid;
[f7,y_qpskf]=T2F(t,y_qpsk);
figure(8);
subplot(2,2,4);
plot(f7,10*log10(abs(y_qpskf).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('接收信号功率谱图Pn=-10dB');
grid;
%[t,ny_qpsk]=bpf(f7,y_qpskf,1,8);
%相干解调
%通过乘法器1
r_qpsk1=y_qpsk.*h1t;
figure(3);
subplot(2,4,2);
plot(t,r_qpsk1);
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('上支路通过乘法器信号时域波形图');
grid;
%通过低通滤波器
[f8,r_qpsk1f]=T2F(t,r_qpsk1);
B1=1;
[t1,r_qpsk11]=lpf(f8,r_qpsk1f,B1);
figure(3);
subplot(2,4,3);
plot(t1,r_qpsk11)
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('上支路通过低通滤波器信号时域波形图');
grid;
%抽样判决
dd11=r_qpsk11(fc*N_sample:
2*fc*N_sample:
end);
dd22=sign(dd11);%判决
dd222=sigexpand(dd22,2*fc*N_sample);
d_NRZ11=conv(dd222,gt1);%得到上支路信号
d_NRZ11DLY=[-ones(1,N_sample*fc),d_NRZ11(1:
end-N_sample*fc)];%上支路信号延时
figure(3);
subplot(2,4,4);
plot(t,d_NRZ11DLY(1:
Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('上支路抽样判决后信号时域波形图');
grid;
%通过乘法器2
r_qpsk2=y_qpsk.*h2t;
figure(3);
subplot(2,4,6);
plot(t,r_qpsk2);
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('下支路通过乘法器信号时域波形图');
grid;
%通过低通滤波器
[f9,r_qpsk2f]=T2F(t,r_qpsk2);
[t2,r_qpsk21]=lpf(f9,r_qpsk2f,B1);
figure(3);
subplot(2,4,7);
plot(t2,r_qpsk21)
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('下支路通过低通滤波器信号时域波形图');
grid;
%抽样判决
dd33=r_qpsk21(fc*N_sample:
2*fc*N_sample:
end);
dd44=sign(dd33);%判决
dd444=sigexpand(dd44,2*fc*N_sample);
d_NRZ21=conv(dd444,gt1)
figure(3);
subplot(2,4,8);
plot(t,d_NRZ21(1:
Lt))
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('下支路抽样判决后信号时域波形图');
grid;
dd22DLY=d_NRZ11DLY(fc*N_sample:
2*fc*N_sample:
end);
%并串转换
ddd=[];
fors=1:
N/2
ddd(2*s-1)=dd22DLY(s);
ddd(2*s)=dd44(s);
end
rddd=sigexpand(ddd,fc*N_sample);
%解调信号输出
r_qpsk=conv(rddd,gt);
qr_qpsk=[r_qpsk(2*N_sample*fc+1:
N*N_sample*fc),ones(1,2*N_sample*fc)]
%去除延时
figure(4);
subplot(2,2,3);
plot(t,qr_qpsk(1:
Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('解调信号时域波形图Pn=-10dB');
grid;
[f10,qr_qpskf]=T2F(t,r_qpsk(1:
Lt));
figure(4);
subplot(2,2,4);
plot(f10,10*log10(abs(qr_qpskf).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('解调信号功率谱图Pn=-10dB');
grid;
%眼图
eyediagram(y_qpsk,32,2,8);
x=d_NRZ1(1:
fc*N*N_sample)+j*d_NRZ2DLY(1:
fc*N*N_sample);
%星座图
scatterplot(x);
axis([-4,4,-4,4]);
grid;
xlabel('实部');
ylabel('虚部');
title('星座图');
d_NRZJ=d_NRZ(1:
fc*N*N_sample);
p=find(d_NRZJ<0);
d_NRZJ(p)=0;
q=find(qr_qpsk<0);
qr_qpsk(q)=0;
r=find(d_NRZ>0);
d_NRZJ(r)=1;
s=find(qr_qpsk>0);
qr_qpsk(s)=1;
figure
[num,rt]=biterr(d_NRZJ,qr_qpsk);
Ps=erfc(sqrt(EsN0)*sin(pi/M));
%通过一系列计算可以得到
%
%由于
%可以进一步得到,
semilogy(EsN0dB,Ps,'rd-');
xlabel('Es/N0(dB)');ylabel('误码率');
gridon;
title('QPSK系统的误码率');
⑵用到的子函数
function[out]=sigexpand(d,M)
%将输入的序列扩展成间隔为N-1个0的序列;
N=length(d);
out=zeros(M,N);
out(1,:
)=d;
out=reshape(out,1,M*N);
function[f,sf]=T2F(t,st);
%计算信号的傅里叶变换
%Inputisthetimeandthesignalvectors,thelengthoftimemustgreater
%than2
%Outputisthefrequencyandthesignalspectrum
dt=t
(2)-t
(1);
T=t(end);
df=1/T;
N=length(st);
f=-N/2*df:
df:
N/2*df-df;
sf=fft(st);
sf=T/N*fftshift(sf);
function[t,st]=F2T(f,sf)
%计算信号的反傅里叶变换
df=f
(2)-f
(1);
Fmx=(f(end)-f
(1)+df);
dt=1/Fmx;
N=length(sf);
T=dt*N;
%t=-T/2:
dt:
T/2-dt;
t=0:
dt:
T-dt;
sff=fftshift(sf);
st=Fmx*ifft(sff);
%低通滤波器
function[t,st]=lpf(f,sf,B)
%f:
frequencysamples
%sf:
inputdataspect