|
|
function [gpsEph,iSv] = ClosestGpsEph(allGpsEph,svIds,fctSeconds) |
|
|
%[gpsEph,iSv] = ClosestGpsEph(allGpsEph,svIds,fctSeconds); |
|
|
%find ephemeris in a GPS ephemeris structure allGpsEph for all svIds listed |
|
|
%return gpsEph = unique ephemeris for svIds, with fctToe closest to fctSeconds, |
|
|
% and |fctToe - fctSeconds| < fitInterval |
|
|
% |
|
|
%output: gpsEph, iSv |
|
|
% gpsEph = valid ephemeris corresponding to svIds(iSv) |
|
|
|
|
|
%Author: Frank van Diggelen |
|
|
%Open Source code for processing Android GNSS Measurements |
|
|
|
|
|
gpsEph = allGpsEph(1);%initialize gpsEph |
|
|
numEph = 0; |
|
|
|
|
|
%find all ephemeris corresponding to svIds(i) |
|
|
for i=1:length(svIds) |
|
|
iThisSv = [allGpsEph.PRN] == svIds(i); |
|
|
if any(iThisSv) |
|
|
ephThisSv = allGpsEph(iThisSv); |
|
|
%find Toe within fit interval |
|
|
%set fit interval |
|
|
fitIntervalHours = [ephThisSv.Fit_interval]; |
|
|
%Rinex says "Zero if not known", so adjust for zeros |
|
|
fitIntervalHours(fitIntervalHours == 0) = 4; |
|
|
%full cycle time of ephemeris Toe |
|
|
fctToe = [ephThisSv.GPS_Week]*GpsConstants.WEEKSEC + [ephThisSv.Toe]; |
|
|
%find freshest Toe |
|
|
[ageSeconds, iMin] = min(abs(fctToe - fctSeconds)); |
|
|
if ageSeconds < (fitIntervalHours/2)*3600; |
|
|
numEph = numEph+1; |
|
|
gpsEph(numEph) = ephThisSv(iMin); |
|
|
iSv(numEph) = i;%save index into svIds |
|
|
else |
|
|
fprintf('No valid ephemeris found for svId %d,', svIds(i)) |
|
|
ageHours = (fctToe(iMin)-fctSeconds)/3600; |
|
|
fprintf(' closest Toe is %.1f hours away.\n',ageHours) |
|
|
end |
|
|
end |
|
|
end |
|
|
|
|
|
if numEph==0 |
|
|
gpsEph=[];iSv=[];%return empty matrices |
|
|
end |
|
|
|
|
|
|
|
|
end %of function ClosestGpsEph |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
|
|
|
|
% Copyright 2016 Google Inc. |
|
|
% |
|
|
% Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
% you may not use this file except in compliance with the License. |
|
|
% You may obtain a copy of the License at |
|
|
% |
|
|
% http://www.apache.org/licenses/LICENSE-2.0 |
|
|
% |
|
|
% Unless required by applicable law or agreed to in writing, software |
|
|
% distributed under the License is distributed on an "AS IS" BASIS, |
|
|
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
|
% See the License for the specific language governing permissions and |
|
|
% limitations under the License. |
|
|
|
|
|
|
|
|
|