(1)利用rand随机产生一组元素为10的数字序列。
(2)根据2psk调制原理画调制信号。
(3)根据相干解调法,将已经调制信号,在信道引入噪声,先经过带通滤波器,再和余弦信号相乘,再经过低通滤波器,进行抽样判决,画出解调后的波形,与原始信号波形进行比较。
%2PSK调制解调
clear all
close all
fs=2000;%采样频率
dt=1/2000;%采样时间
T=1;%码元宽度
f=20;%信号频率
a=round(rand(1,10));%原始数字信号
g1=a;g2=~a;
g11=(ones(1,2000))'*g1;%抽样
g1a=g11(:)';
g21=(ones(1,2000))'*g2;%抽样
g2a=g21(:)';
t=0:dt:10-dt;
t1=length(t);
psk1=g1a.*cos(2*pi*f*t);%码元0用0相位
psk2=g2a.*cos(2*pi*f*t+pi);
sig_psk=psk1+psk2;%产生2psk信号
no=0.01*randn(1,t1);%噪声
sn=sig_psk+no;
figure(1)
subplot(311),plot(t,no);title('噪声波形'),ylabel('幅度');
subplot(312),plot(t,sig_psk);title('psk信号波形'),ylabel('幅度');
subplot(313),plot(t,sn);title('经过信道后的信号'),ylabel('幅度');
%解调
bpf=fir1(101,[19/1000,21/1000]);%带通滤波器设置
H=filter(bpf,1,sn);%经过带通滤波后的信号
sw=H.*cos(2*pi*f*t);
lpf=fir1(101,[1/1000,10/1000]);%低通滤波器设置
st=filter(lpf,1,sw);
figure(2)
subplot(211),plot(t,sw);title('乘法器输出信号'),ylabel('幅度');
subplot(212),plot(t,st);title('低通滤波后输出信号'),ylabel('幅度');
%抽样判决
sig=zeros(1:t);
for i=1:length(t)
if(st(i)>0)
sig(i)=0;
else
sig(i)=1;
end
end
figure(3)
subplot(211),plot(sig),axis([0 20000 0 2]),title('经过抽样判决后解调出的波形'),ylabel('幅度');
subplot(212),plot(g1a),axis([0 20000 0 2]),title('原始信号'),ylabel('幅度');
(1)利用rand随机产生一组元素为10的数字序列。
(2)根据2dpsk调制原理画调制信号。
(3)根据相干解调法,调制信号经过带通滤波器,再和余弦信号相乘,再经过低通滤波器,进行抽样判决,之后经过码反变换器,画出解调后的波形,与原始信号波形进行比较。
main.m
%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));
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(411),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(412),plot(t,st1),title('相对码'),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(413),plot(t,st2),title('相对码的反码'),axis([0,5,-1,2]);
%载波信号
s1=sin(2*pi*fc*t);
subplot(414),plot(s1),title('载波信号');
%调制
d1=st1.*s1;
d2=st1.*(-s1);
figure(2)
subplot(411),plot(t,d1),title('st1*s1');
subplot(412),plot(t,d2),title('st1*s2');
e_dpsk=d1+d2;
subplot(413),plot(t,e_dpsk),title('调制后波形');
noise=rand(1,j);
dpsk=e_dpsk+0.5*noise;
subplot(414),plot(t,dpsk),title('加噪声信号');
%延迟单元
if dpsk(65)<0
dpsk_delay(1:j/i)=dpsk(1:j/i);
else
dpsk_delay(1:j/i)=-dpsk(1:j/i);
end
dpsk_delay(j/i+1:j)=dpsk(1:j-j/i);
%与未延迟信号相乘
dpsk=dpsk.*dpsk_delay;
figure(3)
subplot(311),plot(t,dpsk),title('延迟相乘后波形');
%低通滤波
[f,af]=F2T(t,dpsk);
[t,dpsk]=lpf(f,af,B);
subplot(312),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)=1;
end
else
for j=m*500+1:(m+1)*500
st(m+1)=1;
dpsk(1,j)=0;
end
end
end
subplot(313),plot(t,dpsk),axis([0,5,-1,2]),title('抽样判决后即解调后的波形');
F2T.m
function [t,st]=F2T(f,sf)
%傅里叶变换
df=f(2)-f(1);%频率分辨率
Fmx=f(end)-f(1)+df;%频率区间长度
dt=1/Fmx;
N=length(sf);
T=dt*N;
t=0:dt:T-dt;
sff=fftshift(sf);
st=Fmx*ifft(sff);
end
lpf.m
function [t,st]=lpf(f,sf,B)
df=f(2)-f(1);
T=1/df;
hf=zeros(1,length(f));
bf=[-floor(B/df):floor(B/df)]+floor(length(f)/2);
hf(bf)=1;
yf=hf.*sf;
[t,st]=F2T(f,yf);
st=real(st);
end
《通信原理实验教程》刘佳 徐海霞