【Matlab】DBPSK差分二进制相移键控波形生成

前言

一个通信原理课程中使用Matlab生成DBPSK波形的实验笔记。

内容

  1. 设发送二进制信息为10011101,码元速率为1波特,载波 sin(wt),幅值为1,初始相位为0。
  2. 当载波频率为2Hz,相位(或相位差)0°代表“0”,相位(或相位差)180°代表“1”,利用matlab软件画出DBPSK的波形

原理

利用前后相邻码元的载波相对相位变化传递数字信息,所以又称相对相移键控。假设∆φ为当前码元与前一码元的载波相位差,可定义一种数字信息与∆φ之间的关系为
【Matlab】DBPSK差分二进制相移键控波形生成_第1张图片

程序源码

j=4000;
i=8;
t=linspace(0,i,j);
fc=2;%载波频率
%产生基带信号
a=[1,0,0,1,1,1,0,1];   % 二进制数据
st1=t;
for n=1:8
    if a(n)<1
        for m=j/8*(n-1)+1:j/8*n
            st1(m)=0;
        end
    else
        for m=j/8*(n-1)+1:j/8*n
            st1(m)=1;
        end
    end
end
figure(1);
subplot(311);
plot(t,st1);
title('绝对码');
grid on ;axis([0,i,-1,2]);

%差分变换
b=zeros(1,8);
if(a(1)==0)
    b(1)=0;
else
    b(1)=1;
end
for n=2:8
    if a(n)==b(n-1)
        b(n)=0;
    else
        b(n)=1;
    end
end
st1=t;
for n=1:8
    if b(n)==0
        for m=j/8*(n-1)+1:j/8*n
            st1(m)=0;
        end
    else
        for m=j/8*(n-1)+1:j/8*n
            st1(m)=1;
        end
    end
end
subplot(323);
plot(t,st1);
title('相对码st1');
grid on ;axis([0,i,-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');
grid on;axis([0,i,-1,2]);
 
%载波信号
s1=sin(2*pi*fc*t+pi);
subplot(325); plot(s1);
grid on;axis([0 j -2 +2]);
title('载波信号s1');
s2=sin(2*pi*fc*t);
subplot(326); plot(s2);
grid on;axis([0 j -2 +2]);
title('载波信号s2');
 
%信号调制
d1=st1.*s1;
d2=st2.*s2;
figure(2);
subplot(311);plot(t,d1);
grid on; axis([0 n -2 +2]);
title('st1*s1');
subplot(312);plot(t,d2);
grid on ;axis([0 n -2 +2]);
title('st2*s2');
e_dpsk=d1+d2;
subplot(313);plot(t,e_dpsk);
grid on ;axis([0 n -2 +2]);
title('调制后波形');

结果分析

名称 初始相位 - - - - - - - -
绝对码 - 1 0 0 1 1 1 0 1
相对码st1 0 π π π 0 π 0 0 π
相对码st2 π 0 0 0 π 0 π π 0

相应的DBPSK信号调制过程波形如下图所示
【Matlab】DBPSK差分二进制相移键控波形生成_第2张图片
【Matlab】DBPSK差分二进制相移键控波形生成_第3张图片

结语

差分也就是相对,遇到0相位不变,遇到1相位就要发生变化。

你可能感兴趣的:(通信原理,学习笔记,Matlab,matlab)