通信原理第七章大作业.docx
《通信原理第七章大作业.docx》由会员分享,可在线阅读,更多相关《通信原理第七章大作业.docx(16页珍藏版)》请在冰豆网上搜索。
通信原理第七章大作业
通信原理
第七章仿真作业
2DPSK调制信号分别采用相干解调及差分相干解调解调方式时性能
一、仿真要求
试编写程序,仿真2DPSK调制信号在高斯信道下分别采用相干解调及差分相干解调两种解调方式时的性能,并与理论分析结果相比较。
(1)每种解调方式下画出两条性能曲线,一条是根据理论平均错误概率画出,另一条是仿真曲线;
(2)程序的基本流程:
信源产生信息比特、2DPSK调制、将调制信号送入信道(产生高斯白噪声的程序)、接收端检测、将检测结果与信源原始信息比较计算误比特率;
(3)在给定信噪比下,第二步需多次重复,以得到一个平均错误概率;
如采用复基带信号进行仿真,相干解调时的仿真结果如下所示:
2DPSK基本原理:
传输系统中要保证信息的有效传输就必须要有较高的传输速率和很低的误码率!
为了后的较低的误码率,就得让传输的信号又较低的误码率。
在传输信号中,2PSK信号和2ASK及2FSK信号相比,具有较好的误码率性能,但是,在2PSK信号传输系统中存在相位不确定性,并将造成接收码元“0”和“1”的颠倒,产生误码。
为了保证2PSK的优点,又不会产生误码,将2PSK体制改进为二进制差分相移键控(2DPSK),及相对相移键控。
2DPSK方式即是利用前后相邻码元的相对相位值去表示数字信息的一种方式。
现假设用Φ表示本码元初相与前一码元初相之差,并规定:
Φ=0表示0码,Φ=π表示1码。
在这种绝对移相方式中,发送端是采用某一个相位作为基准,所以在系统接收端也必须采用相同的基准相位。
如果基准相位发生变化,则在接收端回复的信号将与发送的数字信息完全相反。
所以在实际过程中一般不采用绝对移相方式,而采用相对移相方式。
定义∆Φ为本码元初相与前一码元初相之差,假设:
∆Φ=0→数字信息“0”;
∆Φ=π→数字信息“1”。
则数字信息序列与2DPSK信号的码元相位关系可举例表示如下:
数字信息:
1011011101
DPSK信号相位:
(0)ππ0ππ0π00π
或:
(π)00π00π0ππ0
采用π相位后,若已接收2DPSK序列为π0πππ0ππ0,则经过解调后和逆码变换后可得基带信号,这一过程如下:
2DPSK信号:
(0)π0πππ0ππ0(π)0π000π00π
∆Φ:
πππ00ππ0ππππ00ππ0π
变换后序列:
(0)101110110(π)010001001(相对码)
基带信号:
111001101111001101(绝对码)
虽然相同信噪比2DPSK信号的比2PSK稍高一点,但比2PSK要稳定得多。
三、仿真结果及分析
对2DPSK信号进行仿真,调制后的信号如下图:
在接收端采用相干解调时低通滤波器输出为:
同时在接收端采用相干解调的性能如下图:
在接收端采用非相干解调时低通滤波器输出为:
在接收端采用非相干解调的性能如下图:
结果分析:
由于采样点数不够多,而且低通滤波器设计的不够理想,所以计算结果和理想值有些偏差,但数值大小接近,而且趋势相同。
程序代码:
相干解调
clearall;clc;closeall;
A=1;fc=5;Ns=8;
N=500;Ts=1;%1Bd/s100ÂëÔª
dt=Ts/fc/Ns;
t=0:
dt:
N*Ts-dt;
Lt=length(t);
S=sign(randn(1,N));
SS=sigexpand(S,fc*Ns);
gt=ones(1,fc*Ns);
%figure
(1)
%subplot(221);
S_gt=conv(SS,gt);
S_gt1=S_gt(1:
length(SS));
%plot(t,S_gt1);
%%%%%cos%%%%
ht=sin(2*pi*fc*t);
%%%%%2PSK%%%%%%%%%%%
S_2PSK=S_gt1.*ht;
%figure
(2)
%plot(t,S_2PSK);
%%%%%change2PSKto2DPSK%%%%%%%%%%%%%%%
Ref=-1;
S_gt2=1:
length(S_gt1);
if(S
(1)==1)
S2
(1)=-Ref;
else
S2
(1)=Ref;
end
fori=2:
N
ifS(i)==1
S2(i)=-S2(i-1);
else
S2(i)=S2(i-1);
end
end
SS2=sigexpand(S2,fc*Ns);
S2_gt=conv(SS2,gt);
S2_gt1=S2_gt(1:
length(SS2));
S_2DPSK=S2_gt1.*ht;
%figure
(1);plot(t,S_2DPSK);holdon;title('2DPSKmodulationsignal')
%fori=2:
N
%if(S_gt1((i-1)*Ns*fc+1)==1)
%S_gt2(((i-1)*Ns*fc+1):
i*Ns*fc)=-S_gt1((i-2)*Ns*fc+1);
%else
%S_gt2(((i-1)*Ns*fc+1):
i*Ns*fc)=S_gt1((i-2)*Ns*fc+1);
%end
%end
%%%%%%%%%%%%%%%signalchannel%%%%%%%%%%%%%%%%%%%%%%
ENdB=-8:
0.5:
16;
EN=10.^(ENdB/10);
E=1;
N0=10.^(-ENdB/10);
r=N0;
r_dB=10*log10(r);
E_a=zeros(50,length(r));
%sigma=1./(2*r);%theactualerrorrate
sigma=r/2
forrm=1:
size(E_a,1)%%Loopoutside=50
forrn=1:
length(r)%%Loopinside=length(r)
No=randn(1,length(S_2DPSK))*sqrt(sigma(rn));
R=No+S_2DPSK;
%%%%%%%%%%%receive%%%%%%%%%%%%%%%%
%%%%%%%%%Ïà¸É%%%%%%%%%%%%%%
R_ht=sin(2*pi*fc*t);
R_mt=R.*R_ht;
%%%%%%%idealLPF%%%%%%%%
wc=1*(2*pi);%howtochoosethewc1Hz?
M=1;
t0=-M:
0.1:
M-0.1;
%t0=t00+eps;
hdn=sin(wc*(t0))./(pi*(t0));hdn(M*10+1)=(hdn(M*10)+hdn(M*10))/2;
%plot(t0,hdn);
R_lpf0=conv(hdn,R_mt);
%plot();
R_lpf=R_lpf0(M*10:
length(R_mt)+M*10-1);
%figure
(2),plot(t,R_lpf);
%%%%%%%%%%%decideatcerterntime%%%%%%%%%%%%%%
R_s=zeros(1,N);
select=Ns*fc/2:
Ns*fc:
Ns*fc*N-Ns*fc/2;
fori=1:
N
ifR_lpf(select(i))>0
R_s0(i)=1;
else
R_s0(i)=-1;
end
end
%%%%%%%%%codeinversetransformation%%%%%%%%%%%%%%%%
R_s1=zeros(1,N);
ifR_s0
(1)==Ref
R_s1
(1)=-1;
else
R_s1
(1)=1;
end
fori=2:
N
ifR_s0(i)==R_s0(i-1)
R_s1(i)=-1;
else
R_s1(i)=1;
end
end
%
%po=find(S2~=R_s0);
%error0=length(po)
po1=find(S~=R_s1);
error1=length(po1);
E_a(rm,rn)=error1/N;
end
end
E_a1=sum(E_a)/size(E_a,1);
E_adB=10*log10(E_a1);
%%%%%%%%%%%thetheoraticalerrorrate%%%%%%%%%%%%%%
E_rate_th=10*log10(1./sqrt(pi*EN).*exp(-EN));
figure
plot(ENdB,E_rate_th,'rd-');gridon;holdon;
plot(ENdB,E_adB,'b*-');legend('ÀíÂÛ¼ÆËã½á¹û','·ÂÕæ½á¹û');xlabel('E/n0');ylabel('Errorrate');
非相干解调:
clearall;clc;closeall;
A=1;fc=2;Ns=8;
N=10;Ts=1;%1Bd/s100ÂëÔª
dt=Ts/fc/Ns;
t=0:
dt:
N*Ts-dt;
Lt=length(t);
S=sign(randn(1,N));
SS=sigexpand(S,fc*Ns);
gt=ones(1,fc*Ns);
%figure
(1)
%subplot(221);
S_gt=conv(SS,gt);
S_gt1=S_gt(1:
length(SS));
%plot(t,S_gt1);
%%%%%cos%%%%
ht=sin(2*pi*fc*t);
%%%%%2PSK%%%%%%%%%%%
S_2PSK=S_gt1.*ht;
%figure
(2)
%plot(t,S_2PSK);
%%%%%change2PSKto2DPSK%%%%%%%%%%%%%%%
Ref=-1;
S_gt2=1:
length(S_gt1);
if(S
(1)==1)
S2
(1)=-Ref;
else
S2
(1)=Ref;
end
fori=2:
N
ifS(i)==1
S2(i)=-S2(i-1);
else
S2(i)=S2(i-1);
end
end
SS2=sigexpand(S2,fc*Ns);
S2_gt=conv(SS2,gt);
S2_gt1=S2_gt(1:
length(SS2));
%%%%%%%%%%%addthereferencesignal%%%%%%%%%%%%%%%
%S2_gt2=[ones(1,Ns*fc)*Ref,S2_gt1];
S_2DPSK0=S2_gt1.*ht;
S_2DPSK=[ones(1,Ns*fc)*Ref.*ht(1:
Ns*fc),S_2DPSK0];
t1=[-Ts:
dt:
-dt,t];
%figure
(1);plot(t1,S_2DPSK);holdon;
%fori=2:
N
%if(S_gt1((i-1)*Ns*fc+1)==1)
%S_gt2(((i-1)*Ns*fc+1):
i*Ns*fc)=-S_gt1((i-2)*Ns*fc+1);
%else
%S_gt2(((i-1)*Ns*fc+1):
i*Ns*fc)=S_gt1((i-2)*Ns*fc+1);
%end
%end
%%%%%%%%%%%%%%%signalchannel%%%%%%%%%%%%%%%%%%%%%%
ENdB=-8:
0.5:
16;
EN=10.^(ENdB/10);
E=1;
N0=10.^(-ENdB/10);
r=N0;
r_dB=10*log10(r);
E_a=zeros(50,length(r));
%sigma=1./(2*r);%theactualerrorrate
sigma=r/2
forrm=1:
size(E_a,1)%%Loopoutside=50
forrn=1:
length(r)%%Loopinside=length(r)
No=randn(1,length(S_2DPSK))*sqrt(sigma(rn));
R=No+S_2DPSK;
%%%%%%%%%%%receive%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%noncoherentdemodulation%%%%%%%%%%
R1=R(Ns*fc+1:
end);%usefulsignal
R2=R(1:
end-Ns*fc);
R_nd=R1.*R2;
%%%%%%%idealLPF%%%%%%%%
wc=1.5*(2*pi);%howtochoosethewc
t0=-4:
0.1:
4-0.1;
%t0=t00+eps;
hdn=sin(wc*(t0))./(pi*(t0));hdn(21)=(hdn(20)+hdn(22))/2;
%plot(t0,hdn);
R_lpf0=conv(hdn,R_nd);
%plot();
R_lpf=R_lpf0(40:
length(R_nd)+40-1);
%figure
(2),plot(t,R_lpf);
%%%%%%%%%%%decideatcerterntime%%%%%%%%%%%%%%
R_s=zeros(1,N);
select=Ns*fc/2:
Ns*fc:
Ns*fc*N-Ns*fc/2;
fori=1:
N
ifR_lpf(select(i))>0
R_s0(i)=1;
else
R_s0(i)=-1;
end
end
%%%%%%%%%%%%andchange1to00to1%%%%%%%%%%%%%%%
R_s1=R_s0;
po1=find(R_s0==1);
po0=find(R_s0==-1);
R_s1(po1)=-1;
R_s1(po0)=1;
pos=find(S~=R_s1);
E_a(rm,rn)=length(pos);
end
end
E_a1=sum(E_a)/size(E_a,1);
E_adB=10*log10(E_a1);
%%%%%%%%%%%thetheoraticalerrorrate%%%%%%%%%%%%%%
E_rate_th=10*log10(1/2*exp(-EN));
figure
plot(ENdB,E_rate_th,'rd-');gridon;holdon;
plot(ENdB,E_adB,'b*-');legend('ÀíÂÛ¼ÆËã½á¹û','·ÂÕæ½á¹û');xlabel('E/n0');ylabel('Errorrate');