代码中伪距公式:
pseudorange(svindex) = c * (bSec + diff_of_dat(svindex) * finefreq);
其中:bSec = 75*1e-3; % base second: the distance between sv and usr is between 67 to 86 sec.
sfb1 = for_prest.sfb1(prn); % unit: 20ms, the beginning of subframe 1
nav1 = for_prest.nav1(prn); % unit: ms, the first navigation data point
bca = TckResult(prn).codedelay(msIndex) -1; % unit: finefreq, beginning of the C/A code
% bca = TckResult(svindex) -1; % unit: finefreq, beginning of the C/A code
dat(svindex) = 20fsmssfb1 + fsmsnav1 + bca; % unit: finefreq.
%bca:跟踪结果得到一个伪码周期开头的位置(即有了接收信号开始到第一个伪码周期开头的时间)(单位是采样点数)
%nav1:一个比特是由20个伪码周期组成,nav1是从bca的位置(第一个伪码周期开始的位置)到第一个
%比特开始的位置,单位是伪码周期(即毫秒数)
%sfb1:是从nav1的位置到第一帧的位置,单位是比特数(即20ms).
%因此,从接收到信号到第一帧开始的位置的距离(采样点数)等于bca+nav11ms的采样点数+sfb120ms的采样点数
%%%%%%%%%%%%%%%%%%%%%%%%
diff_of_dat(svindex) = dat(svindex) - base;
pseudorange(svindex) = c * (bSec + diff_of_dat(svindex) * finefreq);
% diff_of_dat是采样点数, finefreq转换成时间。