⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qpsk.m

📁 高斯加性白噪声下采用MPSK调制的系统BER性能分析
💻 M
字号:
close all;
clc;
clear;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% data generate    F_data=250kbit/s
u=50;               %   the number of data input 
v=3;               %   the multiple of interplate
data=zeros(1,u);
Fs_cosine=3e6;     %   3MHz
for i=1:u,
    if(mod(i,5)==0),
        data(i)=1;
    else
        data(i)=-1;
    end;
end;
figure
stem(data);
grid;
xlabel('时序');
ylabel('幅度');
title('未调制信号')

n=length(data);
data_I=zeros(1,n/2);         % F_data_I=250kbit/s
data_Q=zeros(1,n/2);         % F_data_Q=250kbit/s
for i=1:n
   if(mod(i,2)==0),
      data_Q(i/2)=data(i);
      else
      data_I((i+1)/2)=data(i);
   end;
end;
% figure
% stem(data_I);
% grid;
% figure
% stem(data_Q);
% grid;
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% start raise cosine 
h = firrcos(50,0.4*Fs_cosine,0.4,Fs_cosine,'sqrt');      %    fs=3MHz    fircos_order=50  fc=3*0.4=1.2MHz  sqrt(yes)   0 < Fc < Fs/2
fircos_order=length(h);                                  %    data interplate  3 
for i=1:n/2                                 
    for j=1:v
        if (j==1),
        data_I_inter(1,3*(i-1)+1)=data_I(i);
        data_Q_inter(1,3*(i-1)+1)=data_Q(i);
        else
        data_I_inter(1,3*(i-1)+j)=0;
        data_Q_inter(1,3*(i-1)+j)=0;
        end;
    end;
end;
raise_I_out=conv(h,data_I_inter);                             %   raise cosine pulse shaped data output  R_I_data=3MHz
raise_Q_out=conv(h,data_Q_inter);                             %   raise cosine pulse shaped data output  R_Q_data=3MHz
n1=length(raise_I_out);
n2=length(raise_Q_out);
figure
plot(raise_I_out);
figure
plot(raise_Q_out);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
% start halfband interplote
coef_halfband=firhalfband('minorder',0.3,0.001);
halfband_order=length(coef_halfband)
for i=1:n1                               % interplote  2
    data_I_inter2(1,2*i-1)=raise_I_out(i);
    data_I_inter2(1,2*i)=0;
end;
d_I2=conv(data_I_inter2,coef_halfband);      % interplote  2   output       R_I_data=6MHz
for i=1:n2                                   % interplote  2
    data_Q_inter2(1,2*i-1)=raise_Q_out(i);
    data_Q_inter2(1,2*i)=0;
end;
d_Q2=conv(data_Q_inter2,coef_halfband);      % interplote  2   output       R_Q_data=6MHz
for i=1:length(d_I2),                        % interplote  4
    data_I_inter4(1,2*i-1)=d_I2(i);
    data_I_inter4(1,2*i)=0;
end;
d_I4=conv(data_I_inter4,coef_halfband);      % interplote  4   output       R_I_data=12MHz
for i=1:length(d_Q2),                        % interplote  4
    data_Q_inter4(1,2*i-1)=d_Q2(i);
    data_Q_inter4(1,2*i)=0;
end;
d_Q4=conv(data_Q_inter4,coef_halfband);      % interplote  4   output       R_Q_data=12MHz
figure
plot(d_I4);
t=0:0.001:0.25;
y2=fft(d_I4,256);
figure
plot(abs(y2));
figure
plot(d_Q4);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% cic interplote     
m = 1;   % Differential delays in the filter
n = 4;   % Filter stages
r = 5;   % Interpolation factor
q = quantizer([10 0],'fixed');       % Define the quantizer
d_I_out = cicinterpolate(m,n,r,(d_I4)*1000,q);
d_Q_out = cicinterpolate(m,n,r,(d_Q4)*1000,q);
% figure
% plot(d_I_out);
% figure
% plot(d_Q_out);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% start up converter
pi=3.14;
m1=length(d_I_out);
m2=length(d_Q_out);
for i=1:m1
bpsk_I_up(i)=d_I_out(i,1)*sin(2*pi*i/3);
end;
for i=1:m2
bpsk_Q_up(i)=d_Q_out(i,1)*cos(2*pi*i/3);
end;
for i=1:m1,
    Qpsk(i)=bpsk_I_up(i)+bpsk_Q_up(i);
end;
% figure
% plot(bpsk_I_up);
% figure
% plot(bpsk_Q_up);
figure
plot(Qpsk);
grid;
xlabel('时序');
ylabel('幅度');
title('已调QPSK信号');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -