FEPOCH_0.M
上传用户:sfyaiting
上传日期:2009-10-25
资源大小:320k
文件大小:2k
源码类别:

GPS编程

开发平台:

Matlab

  1. function [time, dt, sats, eof, datee] = fepoch_0(fid)
  2. % FEPOCH_0   Finds the next epoch in an opened RINEX file with
  3. %           identification fid. From the epoch line is produced
  4. %           time (in seconds of week), number of sv.s, and a mark
  5. %           about end of file. Only observations with epoch flag 0
  6. %           are delt with.
  7. %Kai Borre 09-14-96; revised 03-22-97; revised Sept 4, 2001
  8. %Copyright (c) by Kai Borre
  9. %$Revision: 1.0 $  $Date: 1997/09/22  $
  10. %fide = fopen(fid,'rt');
  11. global sat_index;
  12. time = 0;
  13. dt = 0;
  14. sats = []; NoSv = 0;
  15. eof = 0;
  16. while 1
  17.    lin = fgets(fid); % earlier fgetl
  18.    answer = findstr(lin,'COMMENT');    
  19.    if ~isempty(answer);
  20.       lin = fgetl(fid);
  21.    end;       
  22.    if (feof(fid) == 1);
  23.       eof = 1;
  24.       break
  25.    end;
  26.    if ((strcmp(lin(29),'0') == 0) & (size(deblank(lin),2) == 29))
  27.       eof = 1; 
  28.       break
  29.    end; % We only want type 0 data
  30.    if ((strcmp(lin(2),'0') == 1)  &  (strcmp(lin(29),'0') == 1))      
  31.       ll = length(lin)-2;
  32.       if ll > 60, ll = 60; end;
  33.       linp = lin(1:ll);        
  34.       %fprintf('%60sn',linp);
  35.       [year, lin] = strtok(lin);       year;
  36.       [month, lin] = strtok(lin);
  37.       [day, lin] = strtok(lin);       month;       day;
  38.       [hour, lin] = strtok(lin);       %hour
  39.       [minute, lin] = strtok(lin);       %minute
  40.       [second, lin] = strtok(lin);       %second
  41.       [OK_flag, lin] = strtok(lin);
  42.       h = str2num(hour)+str2num(minute)/60+str2num(second)/3600;
  43.       jd = julday(str2num(year)+2000, str2num(month), str2num(day), h);
  44.       [week, sec_of_week] = gps_time(jd);       jd;
  45.       time = sec_of_week;
  46.       [NoSv, lin] = strtok(lin,'G');              for k = 1:str2num(NoSv)
  47.          [sat, lin] = strtok(lin,'G');
  48.          prn(k) = str2num(sat);
  49.       end       
  50.       sats = prn(:);
  51.       dT = strtok(lin);
  52.       if isempty(dT) == 0
  53.          dt = str2num(dT);
  54.       end
  55.       break       
  56.    end    
  57. end; 
  58. datee=[str2num(year) str2num(month) str2num(day) str2num(hour) str2num(minute) str2num(second)];
  59. %%%%%%%% end fepoch_0.m %%%%%%%%%