?? qpsk.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 + -