• 大小: 6KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-19
  • 语言: Matlab
  • 标签: matlab  renix  

资源简介

这是一个用matlab编写的读取renix文件的代码,运行该代码可以很容易读取renix文件

资源截图

代码片段和文件信息

function EphDat = Read_N_Renix(filename)
%Read the N-file with the renix format
%Input:
%        filename: the name of file including the file path
%Output: 
%        EphDat: a structure storing the ephemeris
%       .SatPRN;    //the Sat code
%        .toc;       //gpsweeksec
%        .a0;        //different of the sat clock(second)
%        .a1;        //sat clock drift  (s/s)
%        .a2;        //the rate of the Sat clock drift(s/s^2)
%        .IODE;      //星历数据有效期IODE=Toe -Tl;
%        .Crs;       //轨道半径正弦调和改正项振幅(m)
%        .DetaN;     //平均运动修正量
%        .M0;        //Toe时的平近点角
%        .Cuc;       //纬度幅角余弦调和改正项振幅
%        .e;         //卫星轨道扁心率
%        .Cus;       //纬度幅角正弦调和改正项振幅
%        .sqrtA;     //卫星轨道长半径方根
%        .Toe;       //星历参考时间
%        .Cic;       //轨道倾角余弦调和改正项振幅
%        .OMG0;      //升交点赤经
%        .Cis;       //轨道倾角正弦调和改正项振幅
%        .I0;        //轨道倾角
%        .Crc;       //轨道半径余弦调和改正项振幅(m)
%         .omg;       //近地点角距
%        .OMG0dot;   //升交点赤经变化率
%        .I0dot;     //轨道倾角变化率
%        .ISL2;      //L2 数据标志
%        .GpsWn;     //GPS week number
%        .ISL2P;     //L2 P 数据标志
%         .SatAccu;   //The accuracy of the satellite(m)
%        .SatHth;    //The health of the Satellite (MSB)
%        .Tgd;       //单频接收机延迟改正数
%        .IODC;      //时钟数据有效期

%Begin program
fp=fopen(filename‘r‘);
if(fp==-1)
    error(‘error to open the ‘+ filename);
end

%read the file header
while (1) 
    strTemp=fgets(fp);
    if(strTemp==-1)
        error(‘error in the header file of ‘+ filename);
    end
    if(length(strTemp)<73)
        strTemp(length(strTemp)+1:73)=‘X‘;
    end
    if(strTemp(61:73)==‘END OF HEADER‘)
        break;
    end
end

%read the N file data
%read the first epoch

strTemp=fgets(fp);
EphDat(1).SatPRN=str2num(strTemp(1:2));
Year=str2num(strTemp(4:5));Mon=str2num(strTemp(7:8));
Day=str2num(strTemp(10:11));THour=str2num(strTemp(13:14));
TMin=str2num(strTemp(16:17));TSec=str2num(strTemp(19:22));

if (Year>80)  %GPS从20C80年代上商用
    Year=Year+1900;
else
   Year=Year+2000;
end  
EphDat(1).toc=ConvertGpsTime(YearMonDayTHourTMinTSec);             %转换成GPS周秒

EphDat(1).a0=str2num(strTemp(23:41));      %DE需要转化。。。。。。。。。。
EphDat(1).a1=str2num(strTemp(42:60));
EphDat(1).a2=str2num(strTemp(61:79));

strTemp=fgets(fp);;     %read the second line
EphDat(1).IODE=str2num(strTemp(1:22));
EphDat(1).Crs=str2num(strTemp(23:41));
EphDat(1).DetaN=str2num(strTemp(42:60));
EphDat(1).M0=str2num(strTemp(61:79));

strTemp=fgets(fp);     %read the third line 
EphDat(1).Cuc=str2num(strTemp(1:22));
EphDat(1).e=str2num(strTemp(23:41));
EphDat(1).Cus=str2num(strTemp(42:60));
EphDat(1).sqrtA=str2num(strTemp(61:79));

strTemp=fgets(fp);    %read the fourth line
EphDat(1).Toe=str2num(strTemp(1:22));
EphDat(1).Cic=str2num(strTemp(23:41));
EphDat(1).OMG0=str2num(strTemp(42:60));
EphDat(1).Cis=str2num(strTemp(61:79));

strTemp=fgets(fp);   %read t

评论

共有 条评论