www.pudn.com > mod_qpsk.rar > mod_qpsk.m


function mod_seq=mod_qpsk(seq,Fb,Fc,Fs,base_shape) 
%				mod_seq=mod_qpsk(seq,Fb,Fc,Fs) 
%				MOD_QPSK	the function complete QPSK modulation for the 
%				input data sequence:seq, Fb is the data rate, Fc is the 
%				carrier frequency, Fs is the sampling frequency 
%				mod_seq is the output sequence with length of (length(seq)/2)*Fs/Fd 
%               分为IQ两路正交调制,基带波形为升余弦,seq: [-1 1] 
%               05.3.28增加参数 base_shape, 可选择基带波形:矩形(默认)和升余弦 
 
if nargin < 5 
    base_shape = ''; 
end; 
 
Rb=2*Fb;			% bit rate 
 
T_interval=length(seq)/Rb; 
 
M=length(seq); 
i_seq=seq(1:2:M-1);    % 前提:M为偶数长序列 
q_seq=seq(2:2:M); 
 
ratio=Fs/Fb; 
iseq_sampled=zeros(1,length(i_seq)*ratio); 
qseq_sampled=zeros(1,length(q_seq)*ratio); 
for i=1:length(i_seq), 
	iseq_sampled((i-1)*ratio+1:i*ratio)=i_seq(i); 
end; 
for i=1:length(q_seq), 
	qseq_sampled((i-1)*ratio+1:i*ratio)=q_seq(i); 
end; 
 
if strcmp(base_shape,'rcos') 
    %% raised cosine pulse  
    alpha=0.5; 
    iseq_filtered=rcos_shaped(iseq_sampled,Fb/2,Fs,alpha); 
    qseq_filtered=rcos_shaped(qseq_sampled,Fb/2,Fs,alpha); 
else 
    %% rectangle pulse------default 
    iseq_filtered=iseq_sampled; 
    qseq_filtered=qseq_sampled; 
end; 
 
Ts=1/Fs; 
t=0:Ts:T_interval-Ts; 
mod_seq=iseq_filtered.*cos(2*pi*Fc*t)-qseq_filtered.*sin(2*pi*Fc*t);