资源简介

(有问题的私信我就好了,那个QQ号被盗了)根据多方资料自己动手编制读取rinex3.02版本观测文件数据,基于MATLAB软件!!!!!!之后有时间会陆续编制其他版本,目前在做卫星定位导航方面研究。 r_rinex302_o_data.m:为读取观测文件(o文件)主程序 UTC_GPSsecond.m:为将UTC时间转化为GPS周秒的函数程序(没有认真研究,程序中算法可能有问题,但问题不大,只要算出历元数就好,时间是否正确影响不大,欢迎大牛们指正!!) 另外,文件中配套有测试数据,为rinex3.02版本,测试过程序无误(结果也在文件中呈上!)

资源截图

代码片段和文件信息

%% 观测文件o文件读取程序(Rinex3.02)
%% 打开o文件
clc;
clear all;
[filenamepathname] = uigetfile(‘*.??O‘‘打开O文件‘);
fid = fopen(strcat(pathnamefilename)‘rt‘);
if fid == -1
    msgbox(‘文件选取出错,读取程序无法运行‘‘warning‘‘warn‘);
    return;
end
fid2 = fopen(‘观测文件头.txt‘‘wt‘);
fid3 = fopen(‘观测文件数据.txt‘‘wt‘);
fprintf(fid2‘观测文件头\n‘);
fprintf(fid3‘星座号 卫星号   伪距        载波相位       信噪比     时间 \n‘);

%% 人性化进度条

f = waitbar(0‘Please wait...‘);
pause(.5)

waitbar(.33f‘Loading your data‘);
pause(1)

waitbar(.67f‘Processing your data‘);
pause(1)

waitbar(1f‘Finishing‘);
pause(1)

close(f)

%% 读取文件头
while (1)
    line = fgets(fid);
    if (line == -1)   %读取一行数据
        break;
    end
    if (strfind(line‘APPROX POSITION XYZ‘)~= 0)        %读取测站近似坐标
        appro_x = str2double(line(1:14));
        appro_y = str2double(line(15:28));
        approx_z = str2double(line(29:42));
     end
    if (strfind(line‘DELTA H/E/N‘)~= 0)                %读取天线参数:高,东向、北向的偏心
        ant_h = str2double(line(1:14));
        ant_e = str2double(line(15:28));
        ant_n = str2double(line(29:42));
    end
    if (strfind(line‘OBS TYPES‘)~= 0)                  %读取观测值种类
        if (strfind(line‘G‘)~= 0)
            obs_GC1C = line(8:10);
            obs_GL1C = line(24:26);
            obs_GS1C = line(40:42);
        end
        if (strfind(line‘R‘)~= 0)
            obs_RC1C = line(8:10);
            obs_RL1C = line(24:26);
            obs_RS1C = line(40:42);
        end
        if (strfind(line‘C‘)~= 0)
            obs_CC1I = line(8:10);
            obs_CL1I = line(16:18);
            obs_CS1I = line(24:26);
        end
    end
    if (strfind(line‘INTERVAL‘)~= 0)                  %读取观测历元的间隔
        interval = str2double(line(1:11));
    end
    if (strfind(line‘TIME OF FIRST OBS‘)~= 0)         %读取数据文件中第一个记录的时刻
        year(11) = str2double(line(1:6));
        month(11) = str2double(line(7:12));
        day(11) = str2double(line(13:18));
        hour(11) = str2double(line(19:24));
        minute(11) = str2double(line(25:30));
        second(11) = str2double(line(31:43));
    end
    if (strfind(line‘END OF HEADER‘)~= 0)
        break;
    end
end
 fprintf(fid2‘测站近似坐标 X0=%14.4f‘appro_x);
 fprintf(fid2‘  Y0=%14.4f‘appro_y);
 fprintf(fid2‘  Z0=%14.4f\n‘approx_z);
 fprintf(fid2‘测站观测间隔  interval=%10.3f\n‘interval);
 fprintf(fid2‘测站观测开始时间:Begin= ‘);
 fprintf(fid2‘%15s‘strcat(num2str(year(11))‘年‘num2str(month(11))‘月‘num2str(day(11))‘日‘num2str(hour(11))‘:‘num2str(minute(11))‘:‘num2str(second(11))));
 
 %% 人性化进度条

f = waitbar(0‘Please wait...‘);
pause(.5)

waitbar(.33f‘Start reading file header‘);
pause(1)

waitbar(.67f‘Processing your data‘);
pause(1)

waitbar(1f‘Finishing‘);
pause(1)

close(f)
 
 %% 读取观测数据  
 line_num = 0;                                          %行数
 while feof(fid)~= 1
        line_num = line_num+1;                          % 历元计数
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8160  2020-10-06 11:28  MATLAB rinex3.02观测文件(o文件)读取\r_rinex302_o_data.m

     文件       3231  2020-10-05 19:35  MATLAB rinex3.02观测文件(o文件)读取\UTC_GPSsecond.m

     文件   19258166  2020-02-09 16:24  MATLAB rinex3.02观测文件(o文件)读取\_6463110.19o

     文件        376  2020-10-06 12:06  MATLAB rinex3.02观测文件(o文件)读取\使用说明(必读!!).txt

     目录          0  2020-10-06 11:56  MATLAB rinex3.02观测文件(o文件)读取

----------- ---------  ---------- -----  ----

             19269933                    5


评论

共有 条评论