pullin.m

来自「GPS signal Pulling in Tracking range」· M 代码 · 共 55 行

M
55
字号
function f_5 = pullin(fid, f, ph, sat_id);
%This function performs a linear search at constant code phase and returns
%th IF carrier.
% the purpose is to find the IF carrier with better accuracy so that the
% carrier loop can pull-in

% fid = file pointer to data
% f = coarse carrier IF
% ph = code phase (samples)
% sat_id = satellite
% initial values
fs= 5.714e6;
d1ms=fs/1000;

% Generate CA code
ca = cacode(sat_id, 1.023e6, fs, d1ms);
% Time vector
t = (0:(d1ms-1))/fs;
%initialize variables
C=zeros(101,1);
doppler_index=0;
% Search +/-250Hz with 5 Hz increments
for fc = (f-250):5:(f+250)
    fseek(fid, ph, -1);
    doppler_index=doppler_index+1;
    %Accumulate 10 correlations
    for n = 1:20
        % Read data
        data=(fread(fid, d1ms, 'schar'))';
        %data = (fscanf(fid, '%1d', d1ms));
         %convert i/p data into +1 and -1 form
        %for l=1:length(data);
   %if data(l) == 0
     % data(l) = -1;
     %end
     %end
%data= data';
        % despread
       data = ca.*data;
        % Downconvert
        I_comp = sin(2*pi*fc*t).*data;
        Q_comp = cos(2*pi*fc*t).*data;
        % Accumulate
        I = sum(I_comp);
        Q = sum(Q_comp);
        C(doppler_index) = C(doppler_index) + I.^2 + Q.^2;
     end
  end
  % Find max correlation
 
  i = find(C==max(C));
  f_5 = f + (i-51)*5
  
     
        

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?