您的当前位置:首页正文

dpsk信号matlab实现

2021-01-05 来源:钮旅网


clear all;

close all;

fs=4000000; %设定系统的抽样频率

k=20000; %设定数字基带信号的频率

fc=200000; %设定正弦载波频率

t=0:1/fs:4000/fs; %仿真时间范围

p=21;

s=randint(1,p,2); %设定需要产生的码元个数

m=s(ceil(k*t+0.01)); %将基带生成时域信号

figure(1)

subplot(311)

plot(t,m);

axis([0 10e-4 —0。2 1。2]);

grid on;

title(’数字基带信号');

b=randint(1,p,2);

%将生成的基带转换为差分码

for i=1:p

if (i==1)

if (s(i)==0)

b(i)=0;

else

b(i)=1;

end

elseif (s(i)==b(i-1))

b(i)=0;

else

b(i)=1;

end

end

n=b(ceil(k*t+0。01)); %将差分码生成时域信号

subplot(312)

plot(t,n);

axis([0 10e-4 -0.2 1。2]);

grid on;

title(’差分码')

x=(n-0.5).*2

car=sin(2*pi*fc*t); %定义载波

dpsk=x。*car; %2dpsk信号的载波调制

subplot(313);

plot(t,car);

axis([0 10e—4 —1.2 1.2]);

title('正弦载波’);

subplot(311);

plot(t,dpsk);

axis([0 10e-4 -1.2 1。2]);

title('2DPSK信号');

grid on;

vn=0。05;

noise=vn.*(randn(size(t)));subplot(312);

figure(2)

%产生噪音

plot(t,noise);

grid on;

title(’噪音信号');

axis([0 10e—4 —0。2 0。2]);

dpskn=(dpsk+noise); %调制后加噪

subplot(313);

plot(t,dpskn);

axis([0 10e-4 -1。2 1。2]);

title(’加噪后信号’);

grid on;

%带通滤波器

fBW=40e3;

f=[0:3e3:4e5];

w=2*pi*f/fs;

z=exp(w*j);

BW=2*pi*fBW/fs;

a=。8547;

p=(j^2*a^2);

gain=。135;

Hz=gain*(z+1).*(z—1)。/(z.^2—(p));

Hz(Hz==0)=10^(8);

a=[1 0 0.7305];

b=[0。135 0 -0.135];

dait=filter(b,a,dpskn);

dait=dait.*10;

figure(3)

subplot(311);

plot(t,dait);

axis([0 10e—4 —1。2 1.2]);

title(’通过带通滤波后输出');

grid on;

cm=dpsk。*car; subplot(312);

plot(t,cm);

axis([0 10e—4 —1.2 1.2]);

grid on;

title('通过相乘器后输出');

%低通滤波器

p=0.72;

%2dpsk相干解调

gain1=0.14;

Hz1=gain1*(z+1)。/(z—(p));

a1=[1 -0。72];

b1=[0。14 0.14];

dit=filter(b1,a1,cm);

dit=dit—mean(dit);

subplot(313);

plot(t,dit);

axis([0 10e-4 -1。2 1.2]);

title('通过低通滤波器后输出’grid on;

%抽样判决器

H=1;

);

L=0;

Z=0;

len=length(dit);

for ii=1:len

if dit(ii)〉= Z

Vs(ii)=H;

else

Vs(ii)=L;

end

end

subplot(311)

plot(t,Vs)

figure(4)

title(’解调后差分信号’)

axis([0 10e—4 -0.2 1.2])

grid on;

c=randint(1,22,2); %产生解调后的差分码元

for f=0:19

c(f+1)=fix(Vs(f*200+50)+0.2)

end

d=randint(1,21,2); %定义差分译码后的码元

for l=1:21 %得到差分译码后的码元

if (l==1)

if (s(1)==0)

d(1)=0;

else

d(1)=1;

end

elseif (c(l)==c(l-1))

d(l)=0;

else

d(l)=1;

end

end

y=d(ceil(k*t+0.01));

subplot(313);

plot(t,y);

axis([0 10e-4 —0.2 1。2]);

title(’码反变换输出'); %基带信号与解调后的信号对比

因篇幅问题不能全部显示,请点此查看更多更全内容