clear all;
close all;
A=1;
fc=2; %2Hz
N_sample=8;
N=500; %码元数
Ts=1; %1 Baud/s
dt=Ts/fc/N_sample; %波形采样间隔
t=0:dt:N*Ts-dt;
Lt=length(t);
%产生二进制信源
d=randn(1,N)>.5;
%计算相对码元
d0=0;
for i=1:length(d)
if (i==1)
if (d(i)==d0)
d_2dpsk(i)=0;
else
d_2dpsk(i)=1;
end
elseif (d(i)==d_2dpsk(i-1))
d_2dpsk(i)=0;
else
d_2dpsk(i)=1;
end
end
dd=sigexpand(d,fc*N_sample);
gt=ones(1,fc*N_sample); %NRZ波形
figure(1)
subplot(321); %输入NRZ信号波形(单极性)
d_NRZ=conv(dd,gt);
plot(t,d_NRZ(1:length(t)));
axis([0 10 0 1.2]);
ylabel('输入信号');
subplot(322); %输入NRZ频谱
[f,d_NRZf]=T2F(t,d_NRZ(1:length(t)));
plot(f,10*log10(abs(d_NRZf).^2/Ts));
axis([-2 2 -50 10]);
ylabel('输入信号功率谱密度(dB/Hz)');
dd1=sigexpand(d_2dpsk,fc*N_sample);
subplot(323); %差分NRZ信号波形(单极性)
d_NRZ1=conv(dd1,gt);
plot(t,d_NRZ1(1:length(t)));
axis([0 10 0 1.2]);
ylabel('差分信号');
subplot(324); %差分NRZ频谱
[f,d_NRZ1f]=T2F(t,d_NRZ1(1:length(t)));
plot(f,10*log10(abs(d_NRZ1f).^2/Ts));
axis([-2 2 -50 10]);
ylabel('差分信号功率谱密度(dB/Hz)');
%2dpsk
ht=A*cos(2*pi*fc*t);
d_2dpsk1=2*d_NRZ1-1;
s_2dpsk=d_2dpsk1(1:Lt).*ht;
subplot(325);
plot(t,s_2dpsk);
axis([0 10 -1.2 1.2]);
ylabel('2DPSK');
subplot(326);
[f,s_2dpskf]=T2F(t,s_2dpsk);
plot(f,10*log10(abs(s_2dpskf).^2/Ts));
axis([-fc-4 fc+4 -50 10]);
ylabel('2DPSK功率谱密度(dB/Hz)');
%采用相位比较法
count=1;
for i=1:length(t)
if(mod(i,8)==1&i~=1)
count=count+1;
end
if (i==5)
if (s_2dpsk(i)==1)
d1(count)=0;
else
d1(count)=1;
end
elseif (mod(i,8)==5)
if (s_2dpsk(i-8)*s_2dpsk(i)==1)
d1(count)=0;
else
d1(count)=1;
end
end
end
d1_out=d1(1,1:2:end);
dd2=sigexpand(d1_out,fc*N_sample);
figure(2)
subplot(221); %输出解调NRZ信号波形
d_NRZ2=conv(dd2,gt);
plot(t,d_NRZ2(1:length(t)));
axis([0 10 0 1.2]);
ylabel('相位比较法解调信号');
subplot(222); %输出NRZ频谱
[f,d_NRZ2f]=T2F(t,d_NRZ2(1:length(t)));
plot(f,10*log10(abs(d_NRZ2f).^2/Ts));
axis([-2 2 -50 10]);
ylabel('相位比较法解调NRZ信号功率谱密度(dB/Hz)');
%相干解调
count1=1;
s_2dpsk1=s_2dpsk.*ht;
for k=1:length(t)
if(mod(k,8)==1&k~=1)
count1=count1+1;
end
if (mod(k,8)==5)
if (s_2dpsk1(k)==1)
d2(count1)=1;
else
d2(count1)=0;
end
end
end
d2_out=d2(1,1:2:end);
for n=1:length(d2_out)
if (n==1)
if (d2_out(n)==d0)
d2_out1(n)=0;
else
d2_out1(n)=1;
end
elseif (d2_out(n)==d2_out(n-1))
d2_out1(n)=0;
else
d2_out1(n)=1;
end
end
dd3=sigexpand(d2_out1,fc*N_sample);
subplot(223); %输出解调NRZ信号波形
d_NRZ3=conv(dd3,gt);
plot(t,d_NRZ3(1:length(t)));
axis([0 10 0 1.2]);
ylabel('相干解调信号');
subplot(224); %输出NRZ频谱
[f,d_NRZ3f]=T2F(t,d_NRZ3(1:length(t)));
plot(f,10*log10(abs(d_NRZ3f).^2/Ts));
axis([-2 2 -50 10]);
ylabel('相干解调NRZ信号功率谱密度(dB/Hz)');
评论0