跟踪的主要目的是精确化频率和码相位值,并保持跟踪,然后从跟踪到的卫星中解调出导航数据
Fig1 跟踪流程图
1.初始化输出结构体参数
%%%%tracking.m
trackResults.status = '-'; % 初始状态为无信号捕获
trackResults.absoluteSample = zeros(1, settings.msToProcess); %共msToProcess输出值,初始值为36000,确保遍历所有子帧
%记录每ms的实时码频率
trackResults.codeFreq = inf(1, settings.msToProcess);
% Frequency of the tracked carrier wave:
%记录每ms的实时跟踪载波频率
trackResults.carrFreq = inf(1, settings.msToProcess);
% Outputs from the correlators (In-phase):
% 同相支路的相关器的输出值
trackResults.I_P = zeros(1, settings.msToProcess);
trackResults.I_E = zeros(1, settings.msToProcess);
trackResults.I_L = zeros(1, settings.msToProcess);
% Outputs from the correlators (Quadrature-phase):
%正交支路的相关器输出值
trackResults.Q_E = zeros(1, settings.msToProcess);
trackResults.Q_P = zeros(1, settings.msToProcess);
trackResults.Q_L = zeros(1, settings.msToProcess);
% Loop discriminators 定义为极大值
trackResults.dllDiscr = inf(1, settings.msToProcess);
%跟踪环路延迟锁相环鉴相器的输出值
trackResults.dllDiscrFilt = inf(1, settings.msToProcess);
%跟踪环路延迟锁相环滤波器的输出值
trackResults.pllDiscr = inf(1, settings.msToProcess);
%跟踪环路载波锁相环鉴相器的输出值
trackResults.pllDiscrFilt = inf(1, settings.msToProcess);
%跟踪环路载波锁相环滤波器的输出值
trackResults = repmat(trackResults, 1, settings.numberOfChannels);
%生成numberOfChannels个结构体
%% 初始化跟踪变量 ==========================================
codePeriods = settings.msToProcess; % 跟踪的C/A码周期数
%--- DLL variables --------------------------------------------------------
% Define early-late offset (in chips)
%超前-滞后与及时码的间隔 单位为码片
earlyLateSpc = settings.dllCorrelatorSpacing;
% Summation interval
% 码环累加间隔1ms
PDIcode = 0.001;
% Calculate filter coefficient values
% 环路采用二阶环
[tau1code