www.gusucode.com > GPS仿真Matlab编程源码程序 > GPS仿真Matlab编程源码程序/codelaygen.m

    % ************ This program generates the delayed  C/A code and digitizes it
function codelay = codelaygen(Nt_cdy,fs_cdy,tdelay_cdy,svnum_cdy,t1_cdy,gold_rate)
     
% code--gold code
% n--number of samples
% fs--sample frequency in Hz
% tdelay--delay time  caused by the transition from sv to receiver
% svnum--satellite number;

% t1_cdy=3e-4;
% fs_cdy=5e6;
% T1_cdy=80e-3;
% svnum_cdy=1;
% tdelay_cdy=3e-4;
% t=t1_cdy:1/fs_cdy:T1_cdy;
% Nt_cdy=length(t);

% gold_rate=1.023e6; % gold code clock rate in Hz

ts=1/fs_cdy;
tc=1/gold_rate;
% n_cdy=fs_cdy/1000;
% cmd1=codegen(svnum_cdy); % generate C/A code
cmd1=generateCAcode(svnum_cdy);
code_in=cmd1;

% ********** creating 16 C/A code for digitizing ***************

% code_a=[code_in code_in code_in code_in];
% code_a=[-code_a -code_a];
% code_a=[code_a code_a];
% code_a=[-code_a code_a];
% code_a=[code_a code_a];
% 
% code_a=[code_a code_a];
% code_a=[code_a code_a];
% code_a=[code_a code_a];
code_b=[code_in code_in code_in code_in code_in code_in code_in code_in code_in code_in];
% code_b=[code_b code_b];
% code_a=[code_b code_b];
% code_a=[code_a code_a];
% code_a=[code_a code_a];
% code_a=[code_a code_a];
% code_a=[code_a code_a];
% code_a=[code_a code_a];
code_a=repmat(code_b,1,300);
% ******************** digitizing  ************************

% codelay=zeros(1,n);
% d=ceil(tdelay_cdy/ts);
% b=[d:n];
% c=ceil((ts*b-tdelay_cdy)/tc);
% if ts*d==tdelay_cdy
%     c(1)=1;
% end
% codelay([d:n])=code_a(c);
% b=[1:d-1];
% c=ceil((16e-3-tdelay_cdy+ts*b)/tc);
% if c(d-1)>length(code_a)
%     c(d-1)=c(d-1)-1;
% end
% codelay([1:d-1])=code_a(c);


% ************ digitizing delayed C/A code start from t1  **************
codelay=zeros(1,Nt_cdy);
%d=ceil(tdelay_cdy/ts);
if t1_cdy>= tdelay_cdy
   b=[1:Nt_cdy];
   c=ceil((t1_cdy-tdelay_cdy+ts*b)/tc);
   if t1_cdy==tdelay_cdy
      c(1)=1;
   end 
   codelay([1:Nt_cdy])=code_a(c);
else
   d=ceil((tdelay_cdy-t1_cdy)/ts)+1;
   b=[d:Nt_cdy];
   c=ceil((t1_cdy-tdelay_cdy+ts*b)/tc);
    %    if ts*(d-1)==tdelay_cdy-t1
    %       c(1)=c(1)-1;
    %    end
   codelay([d:Nt_cdy])=code_a(c);
    b=[1:d-1];
    c=ceil((15e-3-tdelay_cdy+t1_cdy+ts*b)/tc);
   if c(d-1)>length(code_a)
      c(d-1)=c(d-1)-1;
   end
  codelay([1:d-1])=code_a(c);  
end