📄 digitizg.m
字号:
%digitizg.m This prog generates the C/A code and digitizes it
function code2=digitizg(n,fs,offset,svnum);
%code - gold code
%n - number of samples
%fs - sample frequecncy in Hz
%offset - delay time in seconds must be less than 1/fs cannot shift left
%svnum - satellite number;
gold_rate = 1.023e6;
ts=1/fs;
tc=1/gold_rate;
cmd1=codegen(svnum);% generate C/A code
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];
% ***** digitizing *****
b=[1:n];
c=ceil((ts*b+offset)/tc);
code=code_a(c);
% ***** adjusting first data point *****
if offset>=0;
code2=[code(1) code(1:n-1)];
else
code2=[code(n) code(1:n-1)];
end
function [ca_used]=codegen(svnum);
% ca used : a vector containing the desired output sequence
% the g2s vector holds the appropriate shift of the g2 code to generate
% the C/A code (ex. for SV#19 - use a G2 shift of g2s(19)=471)
% svnum: Satellite number
g2s = [5;6;7;8;17;18;139;140;141;251;252;254;255;256;257;258;
469;470;471; ...
472;473;474;509;512;513;514;515;516;859;860;861;862];
g2shift=g2s(svnum,1);
% Generate G1 code
%load shift register
reg = -1*ones(1,10);
%
for i=1:1023,
g1(i) = reg(10);
save1 = reg(3) * reg(10);
reg(1,2:10)=reg(1:1:9);
reg(1) = save1;
end;
%
% Generate G2 code
%
reg=-1*ones(1,10);
for i=1:1023,
g2(i)=reg(10);
save2=reg(2)*reg(3)*reg(6)*reg(8)*reg(9)*reg(10);
reg(1,2:10) = reg(1:1:9);
reg(1)=save2;
end
%shift G2 code
g2tmp(1,1:g2shift)=g2(1,1023-g2shift+1:1023);
g2tmp(1,g2shift+1:1023)=g2(1,1:1023-g2shift);
%
g2=g2tmp;
%
%Form single sample C/A code by multiplying G1 and G2
%
ss_ca = g1.*g2;
ca_used = ss_ca;
%% Change to 1 0 outputs
%ind1=find(ca==-1);
%ind2=find(ca==1);
%ca(ind1)=ones(1,length(ind1));
%ca(ind2)=zeros(1,length(ind2));
%ca(1:10)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -