UWBIns/lib/gnss/fepoch_0.m

119 lines
3.1 KiB
Matlab
Raw Normal View History

2025-04-16 20:15:33 +08:00
function [time, dt, sats, eof] = fepoch_0(fid)
% FEPOCH_0 Finds the next epoch in an opened RINEX file with
% identification fid. From the epoch line is produced
% time (in seconds of week), number of sv.s, and a mark
% about end of file. Only observations with epoch flag 0
% are delt with.
%Kai Borre 09-14-96; revised 03-22-97; revised Sept 4, 2001
%Copyright (c) by Kai Borre
%$Revision: 1.0 $ $Date: 1997/09/22 $
%fide = fopen(fid,'rt');
%<25><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>أ<EFBFBD><D8A3>ļ<EFBFBD><C4BC><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>
% time<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
% dt<64><74><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB>Ӳ<D3B2>ò<EFBFBD><C3B2><EFBFBD>Ϊ<EFBFBD><CEAA>ѡ<EFBFBD><EFBFBD><EEA3AC>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>o<EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD><D0B6>У<EFBFBD>
% sats<74><73><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>Ԫ<EFBFBD><D4AA><EFBFBD>۲⵽<DBB2><E2B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
% eof<6F><66><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ļ<EFBFBD>ĩβ
global sat_index;
time = 0;
dt = 0;
sats = [];
NoSv = 0;
eof = 0;
<><D1AD><EFBFBD><EFBFBD>ȡo<C8A1>ļ<EFBFBD><C4BC><EFBFBD>ÿһ<C3BF><D2BB>
while 1
lin = fgets(fid); % earlier fgetl <20>ȶ<EFBFBD>һ<EFBFBD><D2BB>
if (feof(fid) == 1); % <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ĩβ<C4A9><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
eof = 1;
break
end;
% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if length(lin) <= 1
continue;
end
% answer = findstr(lin,'COMMENT'); % <20>жϸ<D0B6><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>COMMENT<4E><54>
%
% if ~isempty(answer); % <20><><EFBFBD>С<EFBFBD>COMMENT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
% lin = fgetl(fid);
% end;
% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>29<32><39><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>Ϊ0<CEAA><30>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
% <20><><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>ֻ<EFBFBD><D6BB>29<32><39>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>û<EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PRN<52><4E><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>
% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
% if ((strcmp(lin(29),'0') == 0) & (size(deblank(lin),2) == 29))
% eof = 1;
% break
% end; % We only want type 0 data
% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еڶ<D0B5><DAB6><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>29<32><39><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
% <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ijһ<C4B3><D2BB>Ԫ<EFBFBD>Ŀ<EFBFBD>ʼ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF>ԴӸ<D4B4><D3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡʱ<C8A1>䡢PRN<52>Ȳ<EFBFBD><C8B2><EFBFBD>
if ((strcmp(lin(2),'1') == 1) & (strcmp(lin(29),'0') == 1))
ll = length(lin)-2;
if ll > 60, ll = 60; end;
linp = lin(1:ll);
%fprintf('%60s\n',linp);
%ʹ<><CAB9>strtok<6F><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
% <20><><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB>õ<EFBFBD>ǰʱ<C7B0><CAB1>
[nian, lin] = strtok(lin);
% year;
[month, lin] = strtok(lin);
% month;
[day, lin] = strtok(lin);
% day;
[hour, lin] = strtok(lin);
% hour
[minute, lin] = strtok(lin);
% minute
[second, lin] = strtok(lin);
% second
[OK_flag, lin] = strtok(lin);
% OK_flag<61><67><EFBFBD>ǵ<EFBFBD>29<32><39><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
%<25><>ʱ<EFBFBD><CAB1>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ֵ<EFBFBD>ͣ<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD>ټ<EFBFBD><D9BC><EFBFBD><EFBFBD><EFBFBD>GPS<50>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
h = str2num(hour)+str2num(minute)/60+str2num(second)/3600;
jd = julday(str2num(nian)+2000, str2num(month), str2num(day), h);
[week, sec_of_week] = gps_time(jd);
time = sec_of_week;
%<25><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
[NoSv, lin] = strtok(lin,'G');
%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫÿ<D4AA><C3BF><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>PRN
for k = 1:str2num(NoSv)
[sat, lin] = strtok(lin,'G');
prn(k) = str2num(sat);
end
% prn<72><6E>1<EFBFBD><31>NoSv<53>еľ<D0B5><C4BE><EFBFBD><EFBFBD><EFBFBD>sats<74><73><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
sats = prn(:);
% <20><><EFBFBD>ռ<EFBFBD><D5BC>Ӳ<D3B2>е<EFBFBD>o<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>û<EFBFBD>иò<D0B8><C3B2><EFBFBD>
dT = strtok(lin);
if isempty(dT) == 0 %<25><><EFBFBD><EFBFBD>dT<64><54>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
dt = str2num(dT);
end
break % <20><><EFBFBD><EFBFBD>whileѭ<65><D1AD>
end
end;
% datee=[str2num(nian) str2num(month) str2num(day) str2num(hour) str2num(minute) str2num(second)];
%%%%%%%% end fepoch_0.m %%%%%%%%%