📄 pullin.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -