• 大小: 3.28MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-30
  • 语言: Matlab
  • 标签: GPS  

资源简介

RINEX格式的GPS观测文件matlab读取程序(附测试数据),建议读者先弄清楚RINEX的格式,然后再来根据需要修改代码

资源截图

代码片段和文件信息

function readGPSdata
%观测文件读取程序
clear all;
clc;
[filenamepathname]=uigetfile(‘*.??O‘‘打开O文件‘);
fid=fopen(strcat(pathnamefilename)‘rt‘);
if fid==-1
    msgbox(‘文件选取出错,读取程序无法运行‘‘warning‘‘warn‘);
    return;
end
fid2=fopen(‘观测文件备份.txt‘‘wt‘);
fprintf(fid2‘观测文件数据备份\n‘);
%读取文件头
while (1)
    line=fgets(fid);
    %读取一行数据
    if (line==-1)
        break;
    end
     if (findstr(line‘APPROX POSITION XYZ‘)~=0)%测站近似坐标
        approxx=str2num(line(1:14));
        approxy=str2num(line(15:28));
        approxz=str2num(line(29:42));
     end
    if (findstr(line‘DELTA H/E/N‘)~=0)%获取天线参数:高,东向、北向的偏心
        anth=str2num(line(1:14));
        ante=str2num(line(15:28));
        anth=str2num(line(29:42));
    end
    if (findstr(line‘TYPES OF OBSERV‘)~=0)%观测值种类
        signalnum=str2num(line(5:6));
       typeNum=1;
        for i=1:signalnum%使编号对应为0-L1;1-L2;2-C1;3-P1;4-P2;5-D1;6-D2
            ii=11+(i-1)*6;
            if (line(ii:ii+1)==‘L1‘)
                type(typeNum)=0;
                typeNum=typeNum+1;
            elseif (line(ii:ii+1)==‘L2‘)
                type(typeNum)=1;
                typeNum=typeNum+1;
            elseif (line(ii:ii+1)==‘C1‘)
                type(typeNum)=2;
                typeNum=typeNum+1;
            elseif (line(ii:ii+1)==‘C2‘)
                type(typeNum)=3;
                typeNum=typeNum+1; 
                
            elseif (line(ii:ii+1)==‘P1‘)
                type(typeNum)=4;
                typeNum=typeNum+1;
            elseif (line(ii:ii+1)==‘P2‘)
                type(typeNum)=5;
                typeNum=typeNum+1;
            elseif (line(ii:ii+1)==‘D1‘)%多普勒频率
                type(typeNum)=6;
                typeNum=typeNum+1;
            elseif (line(ii:ii+1)==‘D2‘)
                type(typeNum)=7;
               break;
            end
        end
    end
    if (findstr(line‘INTERVAL‘)~=0)%观测历元的间隔
        inter=str2num(line(1:11));
    end
    if (findstr(line‘TIME OF FIRST OBS‘)~=0)%数据文件中第一个记录的时刻
        nian(11)=str2num(line(1:6));
        yue(11)=str2num(line(7:12));
        ri(11)=str2num(line(13:18));
        shi(11)=str2num(line(19:24));
        fen(11)=str2num(line(25:30));
        miao(11)=str2double(line(31:43));
    end
    if (findstr(line‘TIME OF LAST OBS‘)~=0)%数据文件中最后一个记录的时刻
        nian(21)=str2num(line(1:6));
        yue(21)=str2num(line(7:12));
        ri(21)=str2num(line(13:18));
        shi(21)=str2num(line(19:24));
        fen(21)=str2num(line(25:30));
        miao(21)=str2double(line(31:43));
    end
    if (findstr(line‘# OF SATELLITES‘)~=0)
        satenum=str2num(line(1:6));
    end
   % if (findstr(line‘PRN / # OF OBS‘)~=0)
        %读取个卫星观测数据的相应数据的个数
    %end
    if (findstr(line‘END OF HEADER‘)~=0)
        break;
    end
end
 fprintf(fid2‘测站近似坐标X0=%14.4f‘approxx);
 fprintf(fid2‘     Y0=%14.4f‘approxy);
 fprintf(fid2‘     Z0=%14.4f\n‘approxz);
 fprintf(fid2‘测站观测间隔  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件    13222818  2017-06-18 13:51  程序与测试数据\abmf0800.15o
     文件       10321  2017-06-20 08:13  程序与测试数据\readGPSdata.m
     目录           0  2017-06-20 08:16  程序与测试数据\

评论

共有 条评论