• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Matlab
  • 标签: dpsk  

资源简介

qpsk在matlab上的仿真 4PSK用的比较多。I 路信号是用余弦载波,由2进制数据流的奇数序列组成;Q路信号用正弦载波,由2进制数据流的偶数序列组成。下面的a是Idata,b就是Qdata,它们分布与各自的载波相乘分别输出 I 路信号和 Q 路信号。I 路信号加上Q路信号就是QPSK输出信号。当 I 路载波信号是0相位时为1,是180°相位时为0;当Q路载波信号是0相位时为1,是180°相位时为0。

资源截图

代码片段和文件信息

clear all 
close all 
% x1是类似[1 1 -1 -1 -1 -1 1 1]的分布作用是控制相位的180°反转。 
%由于仿真中载波的频率是f=1Hz,所以1s的间隔内有一个完整周期的正弦波
 t=[-1:0.01:7-0.01]; % t共800个数据,-1~7s 
t1 = [0:0.01:8-0.01]; %t1也是800个数据点 ,0 ~8s 
 tt=length(t); % tt=800 
x1=ones(1800); 
for i=1:tt 
if (t(i)>=-1 & t(i)<=1) | (t(i)>=5& t(i)<=7); 
x1(i)=1; 
else x1(i)=-1; 
end 
end 
 t2 = 0:0.01:7-0.01; %t2是700个数据点,是QPSK_rc绘图的下标
 t3 = -1:0.01:7.1-0.01; %t3有810个数据点,是i_rc的时间变量
 
t4 = 0:0.01:8.1-0.01; %t4有810个数据点,是q_rc的时间变量
%x2是类似于[1 1 -1 -1 1 1 1 1]的分布作用是控制相位的180°反转 
tt1=length(t1); 
x2=ones(1800); 
for i=1:tt1 
if (t1(i)>=0 && t1(i)<=2) || (t1(i)>=4&& t1(i)<=8); 
x2(i)=1; 
else x2(i)=-1; 
end 
end 
 f=0:0.1:1; 
xrc=0.5+0.5*cos(pi*f); %xrc是一个低通特性的传输函数
  
y1=conv(x1xrc)/5.5; %y1和x1 实际上没什么区别,仅仅是上升沿、下降沿有点过渡带
 y2=conv(x2xrc)/5.5; % y2和x2 实际上没什么区别,仅仅是上升沿、下降沿有点过渡带
 n0=randn(size(t2)); 
f1=1; 
i=x1.*cos(2*pi*f1*t); % x1就是I data 
q=x2.*sin(2*pi*f1*t1); %x2就是Q
data I=i(101:800); 
Q=q(1:700); 
QPSK=sqrt(1/2).*I+sqrt(1/2).*Q; 
QPSK_n=(sqrt(1/2).*I+sqrt(1/2).*Q)+n0; 
 n1=randn(size(t2)); 
i_rc=y1.*cos(2*pi*f1*t3); % y1就是I data,i_rc可能是贴近实际的波形i则是理想波形
 q_rc=y2.*sin(2*pi*f1*t4); %y2就是Q data,q_rc可能是贴近实际的波形q则是理想波
  
I_rc=i_rc(101:800); 
Q_rc=q_rc(1:700); 
QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); 
QPSK_rc_n1=QPSK_rc+n1; 
figure(1) 
subplot(411);plot(t3i_rc);axis([-1 8 -1 1]);ylabel(‘a序列‘); 
subplot(412);plot(t4q_rc);axis([-1 8 -1 1]);ylabel(‘b序列‘); 
subplot(413);plot(t2QPSK_rc);axis([-1 8 -1 1]);ylabel(‘合成序列‘); 
subplot(414);plot(t2QPSK_rc_n1);axis([-1 8 -1 1]);ylabel(‘加入噪声‘);

 bit_in = randint(1e3 1 [0 1]); 
 bit_I = b

评论

共有 条评论