资源简介

读取GNSS3.02格式的观测数据,提取出观测文件的BDS/GPS伪距观测值以及GPS时间信息等

资源截图

代码片段和文件信息

%% 提取观测值文件(O文件)里的伪距,北斗和GPS
%% 格式为每颗卫星的数据按列以时间顺序排列
%% 得到的周内时是GPS时间




function [  Obs  ] = Extra3_02O( filename  mark )

%------------定义常量和字符-----------
line_num       = 0;                   %行数
markEnd = ‘END OF HEADER‘ ;
%------------------------------------
fid  = fopen(filename‘r‘);
%-----------------------
while feof(fid)~=1 
    %读取头文件
    tline        = fgetl(fid);  
    chartline = char(tline) ;   
    END = strfind( chartline  markEnd ) ;
%     schar      = chartline(3:12);                           
    if  isempty( END ) 
        continue ;
    else
        break ;
    end
end
while feof(fid)~=1
        line_num = line_num+1;                           % 历元计数
        tline        = fgetl(fid);  
        chartline = char(tline) ;
        %------------------数据观测时间----------------
        time     =  chartline(3:21);                                     %存储时间
        UTC  = sscanf( time  ‘%d%d%d%d%d%d‘  [16] ) ;            %转换为双精度时间信息,UTC时间
         [Toc_WN Toc_SOW] = utc2gpstime(UTC ) ;                      %将toc从UTC格式转为GPS时格式(周数和周内时)
         Obs.ObsTime.Toc_WN(line_num) = Toc_WN;                                %周数
         Obs.ObsTime.Toc_TOW (line_num) = Toc_SOW;                         %周内时
         
        search_SatNum = str2num(chartline(34:35));                           %搜索到的卫星总数
%         Rec_clock( line_num1 ) = str2num(chartline(42:56));         %接收机时钟校正 
        %-----------------------------------
        NumPRN1 = 0 ;
        NumPRN2 = 0 ;
        for Nr = 1:search_SatNum
            chartline = char(fgetl(fid)); 
            if  chartline(1) == mark.gnss1
                NumPRN1 = NumPRN1+1 ;
                satNr = str2num(chartline(2:3)) ; 
                Obs.BD(line_num )  .PRN(NumPRN1) =   satNr  ;
                Obs.BD(line_num ) .PseudoRange(NumPRN1) = str2num(chartline(6:17));
                Obs.BD(line_num ) .phase(NumPRN1) = str2num(chartline(21:33));
            elseif chartline(1) == mark.gnss2
                NumPRN2 = NumPRN2+1 ;
                satNr = str2num(chartline(2:3)) ; 
                Obs.GPS(line_num )  .PRN(NumPRN2) =   satNr  ;
                Obs.GPS(line_num ) .PseudoRange(NumPRN2) = str2num(chartline(6:17));
                Obs.GPS(line_num ) .phase(NumPRN2) = str2num(chartline(21:33));
            end
        end
end
Obs.epoch = line_num ;
fclose(fid);
end









 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2565  2016-02-22 17:05  Extra3_02O.m

评论

共有 条评论