clear all;
Ts = 1; %码元周期
N_sample = 1000; %每个码元抽样点数
fs=N_sample; %抽样频率
fc = 5; %载波频率
dt = Ts/N_sample; %抽样的时间间隔
N = 200; %码元数
t = 0:dt:(N*N_sample-1)*dt;
df = fs/length(t);
f = -fs/2:df:fs/2-df; %定义频率矢量(频谱图的横坐标)
% 基本码元 g(t) = 1
gt0 = zeros(1,N_sample);
gt1 = ones(1,N_sample); %单极性不归零
%生成随机码元
random_code = randi([0,1],1,N);
%单极性波形的最后结果
yt1 = zeros(1,N*N_sample-1); %绝对码
yt2 = zeros(1,N*N_sample-1); %相对码
last = 0; %参考码元
for i = 1:N
if random_code(i) == 1 %得到波形图
yt1((i-1)*N_sample+1:i*N_sample) = gt1; %单极性不归零NRZ波形
%绝对码
if last == 0
yt2((i-1)*N_sample+1:i*N_sample) = gt1;
last=1;
else
yt2((i-1)*N_sample+1:i*N_sample) = gt0;
last=0;
end
else
yt1((i-1)*N_sample+1:i*N_sample) = gt0;
%绝对码
if last == 0
yt2((i-1)*N_sample+1:i*N_sample) = gt0;
last=0;
else
yt2((i-1)*N_sample+1:i*N_sample) = gt1;
last=1;
end
end
end
%*********************************************************************
%1
%求单极性不归零时域波形于波功率谱密度,进行2ASK调制
figure(1)
subplot(211)
plot(t,yt1);
axis([0 12 -0.1 1.1]);
title('绝对码基带信号');
xlabel('时间t/s');
grid;
subplot(212)
plot(t,yt2);
axis([0 12 -0.1 1.1]);
title('相对码基带信号');
xlabel('时间t/s');
grid;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%2
c1=sin(2*pi*fc*t);
c2=-c1;
for i=1:length(t)
if yt2(i) == 0
yt2_mod(i) = c1(i);
else
yt2_mod(i) = c2(i);
end
end
figure(2)
subplot(211)
plot(t,yt2);
axis([0 12 -0.1 1.1]);
title('相对码基带信号');
xlabel('时间t/s');
grid;
subplot(212)
plot(t,yt2_mod);
axis([0 12 -1.1 1.1]);
title('DPSK调制信号');
xlabel('时间t/s');
grid;
%功率谱密度
figure(3)
subplot(211)
fmt=fft(yt2); % 对时域信号进行FFT变换,计算其频谱
fmt=fftshift(fmt);
fmt=abs(fmt);
fmt_dB=fmt.^2/Ts;
maxF=max(fmt_dB);
fmt_dB=fmt_dB/maxF;
fmt_dB= 10*log10(fmt_dB +eps);
plot(f,fmt_dB);grid on;
axis([-5 5 -150 0]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
title('二进制相对码信号功率谱密度(db)');
subplot(212)
fmt1=fft(yt2_mod); % 对时域信号进行FFT变换,计算其频谱
fmt1=fftshift(fmt1);
fmt1=abs(fmt1);
fmt_dB1=fmt1.^2/Ts;
maxF1=max(fmt_dB1);
fmt_dB1=fmt_dB1/maxF1;
fmt_dB1= 10*log10(fmt_dB1 +eps);
plot(f,fmt_dB1);grid on;
axis([-25 25 -150 20]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
title('2DPSK调制信号功率谱密度(db)');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%3
figure(4)
yt2_mod_awgn = awgn(yt2_mod,10,'measured');
subplot(211)
plot(t,yt2_mod);
axis([0 12 -1.1 1.1]);
title('DPSK调制信号');
xlabel('时间t/s');
grid;
subplot(212)
plot(t,yt2_mod_awgn);
axis([0 12 -2 2]);
title('叠加噪声后DPSK调制信号');
xlabel('时间t/s');
grid;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%4
%延时1个周期的DPSK信号
st1 = c1;
st1 = awgn(st1,10,'measured');
for i=1+1*N_sample:length(yt2_mod_awgn)
st1(i) = yt2_mod_awgn(i-1*N_sample);
end
figure(5)
subplot(211)
plot(t,yt2_mod_awgn);
axis([0 12 -2 2]);
title('叠加噪声后DPSK调制信号');
xlabel('时间t/s');
grid;
subplot(212)
plot(t,st1);
axis([0 12 -2 2]);
title('加噪DPSK调制信号延时一个码元周期的波形图');
xlabel('时间t/s');
grid;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%5 差分相干解调
figure(6)
subplot(211)
yt2_demod = yt2_mod_awgn.*st1;
plot(t,yt2_demod);
axis([0 12 -1.5 1.5]);
title('2DPSK差分相干解调信号波形图');
xlabel('时间t/s');
grid on;
subplot(212)
fmt2=fft(yt2_demod); % 对时域信号进行FFT变换,计算其频谱
fmt2=fftshift(fmt2);
plot(f,abs(fmt2));grid on;
axis([-25 25 0 13000]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
title('2DPSK差分相干调制信号幅频特性');
grid on;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%6
% 进行低通滤波
figure(6)
subplot(211)
fpass = 0;
fstop = 5;
[f1,spf1] = IdealFilter(length(t),fs,fpass,fstop,fft(yt2_demod)); % 此处的频谱不能用fftshift后的!!!!!
spf_t1 = ifft(spf1);
plot(t,spf_t1);grid on;
axis([0 12 -0.7 0.7]);
xlabel('时间(s)');ylabel('电压值(V)');
title('2DPSK相干解调理想低通滤波后信号波形图');
subplot(212)
fmt3=fft(spf_t1); % 对时域信号进行FFT变换,计算其频谱
fmt3=fftshift(fmt3);
plot(f,abs(fmt3));grid on;
axis([-15 15 0 13000]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
title('2DPSK相干解调信号的理想低通滤波结果');
grid on;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%7
%抽样判决
r=zeros(1,N_sample*N);
for i = 1:N-1
if spf_t1((i-0.5)*N_sample) > 0 %得到波形图
r((i-0.5)*N_sample+1:(i+0.5)*N_sample) = gt0; %单极性不归零NRZ波形
else
r((i-0.5)*N_sample+1:(i+0.5)*N_sample) = gt1;
end
end
figure(7)
subplot(211)
plot(t,yt1);
axis([0 12 -0.1 1.1]);
title('发送端的基带信号波形图');
xlabel('时间t/s');
grid;
subplot(212)
plot(t,r);
axis([0 12 -0.1 1.1]);
title('接收采样判决后的被调制信号波形图');
xlabel('时间t/s');
grid;
Matlab实现二进制DPSK调制及差分相干解调 上传版本.zip
版权申诉
5星 · 超过95%的资源 182 浏览量
2022-06-28
21:29:23
上传
评论
收藏 44KB ZIP 举报
天天Matlab科研工作室
- 粉丝: 2w+
- 资源: 7251