程序四 2DPSK调制解调程序及注释 clear all close all i=10; j=5000; fc=4;%载波频率 fm=i/5;%码元速率 B=2*fm; t=linspace(0,5,j); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生基带信号
a=round(rand(1,i)); figure(4); stem(a); st1=t; for n=1:10 if a(n)<1; for m=j/i*(n-1)+1:j/i*n st1(m)=0; end else for m=j/i*(n-1)+1:j/i*n st1(m)=1; end end end figure(1); subplot(321); plot(t,st1); title('绝对码'); axis([0,5,-1,2]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%差分变换
b=zeros(1,i);%%%%%%%%全零矩阵 b(1)=a(1); for n=2:10 if a(n)>=1; if b(n-1)>=1 b(n)=0; else
b(n)=1; end else b(n)=b(n-1); end end st1=t; for n=1:10 if b(n)<1; for m=j/i*(n-1)+1:j/i*n st1(m)=0; end else for m=j/i*(n-1)+1:j/i*n st1(m)=1; end end end subplot(323); plot(t,st1); title('相对码st1'); axis([0,5,-1,2]); st2=t; for k=1:j; if st1(k)>=1; st2(k)=0; else st2(k)=1; end end; subplot(324); plot(t,st2); title('相对码反码st2'); axis([0,5,-1,2]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%载波信号 s1=sin(2*pi*fc*t); subplot(325); plot(s1); title('载波信号s1'); s2=sin(2*pi*fc*t+pi); subplot(326); plot(s2); title('载波信号s2'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信号调制 d1=st1.*s1; d2=st2.*s2; figure(2); subplot(411); plot(t,d1); title('st1*s1'); subplot(412); plot(t,d2); title('st2*s2'); e_dpsk=d1+d2; subplot(413); plot(t,e_dpsk); title('调制后波形'); noise=rand(1,j); dpsk=e_dpsk+noise;%%%%%%%%%%加入噪声 subplot(414); plot(t,dpsk); title('加噪声后信号');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解调 dpsk=dpsk.*s1;%%%%与载波s1相乘 figure(3); subplot(411); plot(t,dpsk); title('与载波相乘后波形'); [f,af]=T2F(t,dpsk);%%%%通过低通滤波器 [t,dpsk]=lpf(f,af,B); subplot(412); plot(t,dpsk); title('低通滤波后波形'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%抽样判决 st=zeros(1,i);%%全零矩阵 for m=0:i-1; if dpsk(1,m*500+250)<0; st(m+1)=0; for j=m*500+1:(m+1)*500; dpsk(1,j)=0; end else for j=m*500+1:(m+1)*500; st(m+1)=1; dpsk(1,j)=1; end end end subplot(413); plot(t,dpsk); axis([0,5,-1,2]); title('抽样判决后波形') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%码反变换 dt=zeros(1,i);%%全零矩阵 dt(1)=st(1); for n=2:10; if (st(n)-st(n-1))<=0&&(st(n)-st(n-1))>-1; dt(n)=0; else dt(n)=1; end end st=t; for n=1:10 if dt(n)<1; for m=j/i*(n-1)+1:j/i*n st(m)=0; end else for m=j/i*(n-1)+1:j/i*n st(m)=1; end end end subplot(414); plot(t,st); axis([0,5,-1,2]); title('码反变换后波形');