%仿真QPSK调制,生成相应的时域波形图、功率谱图
clear all;
close all;
clc;
A=1; % 载波幅度
fc=2; % 载波频率
N_sample=8; % 基带码元抽样点数
N=500; % 码元数
Ts=1; % 码元宽度
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; % 功率谱图纵坐标终点
%产生二进制信源
m=randn(1,N);
d=sign(m);
dd=sigexpand(d,fc*N_sample); % 双极性
gt=ones(1,fc*N_sample); % NRZ波形
d_NRZ=conv(dd,gt); % 基带信号
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=[];
for i=1:N
if rem(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); % NRZ波形
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); % NRZ波形
d_NRZ2=conv(dd2,gt1); % 下支路基带信号
figure(1);
subplot(2,4,3);
plot(t,d_NRZ2(1:Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('下支路基带信号时域波形图');
grid;
[f2,d_NRZ2f]=T2F(t,d_NRZ2(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_NRZ2(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));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('载波信号功率谱图');
grid;
% 生成QPSK信号
s_qpsk1=d_NRZ1(1:Lt).* h1t; %生成上支路调制信号
s_qpsk2=d_NRZ2(1:Lt).* h2t; %生成下支路调制信号
figure(2);
subplot(2,4,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,4,5);
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,4,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,4,6);
plot(f5,10*log10(abs(s_qpsk2f).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('下支路频带信号功率谱图');
grid;
s_qpsk=s_qpsk1+s_qpsk2;
figure(2);
subplot(2,4,3);
plot(t,s_qpsk);
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('已调信号时域波形图');
grid;
[f6,s_qpskf]=T2F(t,s_qpsk);
figure(2);
subplot(2,4,7);
plot(f6,10*log10(abs(s_qpskf).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('已调信号功率谱图');
grid;
% 信道加入高斯白噪声-10dB进行接收解调
% 产生-10dB高斯白噪声
m=1;
p1=-10;
noise = wgn(m,Lt,p1);
% 接收信号
y_qpsk = s_qpsk + noise;
figure(2);
subplot(2,4,4);
plot(t,y_qpsk);
axis([tx1,tx2,ty1,ty2]);
xlabel('时间(S)');
ylabel('幅度');
title('接收信号时域波形图 Pn=-10dB');
grid;
[f7,y_qpskf]=T2F(t,y_qpsk);
figure(2);
subplot(2,4,8);
plot(f7,10*log10(abs(y_qpskf).^2/T));
axis([fx1,fx2,fy1,fy2]);
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('接收信号功率谱图 Pn=-10dB');
grid;
% 相干解调
% 通过乘法器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);
figure(3);
subplot(2,4,4);
plot(t,d_NRZ11(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);
B1=1;
[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;
% 并串转换
ddd=[];
for s=1:N/2
ddd(2*s-1)=dd22(s);
ddd(2*s)=dd44(s);
end
rddd=sigexpand(ddd,fc*N_sample);
%解调信号输出
r_qpsk=conv(rddd,gt);
figure(4);
subplot(2,2,3);
plot(t,r_qpsk(1:Lt));
axis([tx1,tx2,ty1,ty2]);
xlabel('�