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