function demodata = dqpskdemod( sig_dra,modN,jM )
% Summary of this function goes here
% Detailed explanation goes here
%- DQPSK 解调
%---------------------------------------------------
%>>>>>>>>>>>>>>>>>>Initial_Part>>>>>>>>>>>>>>>>>>>>>
%---------------------------------------------------
modN=1;
M=4;
fc=10; % 载波频率
N_sample=32; % 基带码元抽样点数
N=200; % 码元数
Ts=1;% 码元宽度
A=1; % 载波幅度
dt=Ts/fc/N_sample;% 抽样时间间隔
t=0:dt:N*Ts-dt; % 时间向量
c1=A.*cos(2*pi*fc*t);
c2=A.*sin(2*pi*fc*t).*(-1);
gt1=ones(1,fc*N_sample);
gt2=ones(1,2*fc*N_sample);
%---------------------------------------------------
%>>>>>>>>>>>>>>>>>>相干解调接收信号>>>>>>>>>>>>>>>>>>>>>
%---------------------------------------------------
r_dqpsk1=sig_dra .* c1; %接收信号上支路时域
r_dqpsk2=sig_dra .* c2; %接收信号下支路时域
%---------------------------------------------------
%>>>>>>>>>>>>>>>>>>通过低通滤波器 >>>>>>>>>>>>>>>>>>>>>
%---------------------------------------------------
[f8,r_dqpsk1f]=T2F(t,r_dqpsk1);
B1=1;
[t1,r_dqpsk11]=lpf(f8,r_dqpsk1f,B1); %接收信号上支路通过低通滤波时域
[f9,r_dqpsk2f]=T2F(t,r_dqpsk2);
B1=1;
[t2,r_dqpsk22]=lpf(f9,r_dqpsk2f,B1); %接收信号上支路通过低通滤波时域
%---------------------------------------------------
%>>>>>>>>>>>>>>>>>>抽样判决>>>>>>>>>>>>>>>>>>>>>
%---------------------------------------------------
cou11=r_dqpsk11(fc*N_sample:2*fc*N_sample:end)
cou22=r_dqpsk22(fc*N_sample:2*fc*N_sample:end)
if jM==0 %软判
pp11=cou11;
ppp11=sigexpand(pp11,2*fc*N_sample);
pan11=conv(ppp11,gt2);%判决信号上支路时域
pp22=cou22;
ppp22=sigexpand(pp22,2*fc*N_sample);
pan22=conv(ppp22,gt2); %判决信号下支路时域
else %硬判
pp11=sign(cou11);
ppp11=sigexpand(pp11,2*fc*N_sample);
pan11=conv(ppp11,gt2);%判决信号上支路时域
pp22=sign(cou22);
ppp22=sigexpand(pp22,2*fc*N_sample);
pan22=conv(ppp22,gt2); %判决信号下支路时域
end
%---------------------------------------------------
%>>>>>>>>>>>>>>>>>>差分译码>>>>>>>>>>>>>>>>>>>>>
%---------------------------------------------------
r1=[];
r2=[];
for i=1:N/2
if pp11(i)==-1
pp11(i)=1;
else pp11(i)=0;
end
if pp22(i)==-1
pp22(i)=1;
else pp22(i)=0;
end
end
for i=1:N/2
if i==1
r1(1)=pp11(1);
r2(1)=pp22(1);
else
if xor(pp11(i-1),pp22(i-1))==0
r1(i)=xor(pp11(i-1),pp11(i));
r2(i)=xor(pp22(i-1),pp22(i));
else
r1(i)=xor(pp22(i-1),pp22(i));
r2(i)=xor(pp11(i-1),pp11(i));
end
end
end
rr1=sigexpand(r1,2*fc*N_sample);
rrr1=conv(rr1,gt2); %上支解码后信号码元
rr2=sigexpand(r2,2*fc*N_sample);
rrr2=conv(rr2,gt2); %下上支解码后信号码元
%---------------------------------------------------
%>>>>>>>>>>>>>>>>>>并串转换 >>>>>>>>>>>>>>>>>>>>>
%---------------------------------------------------
r=[];
c=0;
for i=1:N/2
c=c+1;
r(c)=r1(i);
c=c+1;
r(c)=r2(i);
end
rr=sigexpand(r,fc*N_sample);
demodata=conv(rr,gt1);%解调输出码元
end