資源簡(jiǎn)介
這是一個(gè)用matlab編寫的讀取renix文件的代碼,運(yùn)行該代碼可以很容易讀取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;??????//星歷數(shù)據(jù)有效期IODE=Toe?-Tl;
%? ??????.Crs;???????//軌道半徑正弦調(diào)和改正項(xiàng)振幅(m)
%? ??????.DetaN;?????//平均運(yùn)動(dòng)修正量
%? ??????.M0;????????//Toe時(shí)的平近點(diǎn)角
%? ??????.Cuc;???????//緯度幅角余弦調(diào)和改正項(xiàng)振幅
%? ??????.e;?????????//衛(wèi)星軌道扁心率
%? ??????.Cus;???????//緯度幅角正弦調(diào)和改正項(xiàng)振幅
%? ??????.sqrtA;?????//衛(wèi)星軌道長(zhǎng)半徑方根
%? ??????.Toe;???????//星歷參考時(shí)間
%? ??????.Cic;???????//軌道傾角余弦調(diào)和改正項(xiàng)振幅
%? ??????.OMG0;??????//升交點(diǎn)赤經(jīng)
%? ??????.Cis;???????//軌道傾角正弦調(diào)和改正項(xiàng)振幅
%? ??????.I0;????????//軌道傾角
%? ??????.Crc;???????//軌道半徑余弦調(diào)和改正項(xiàng)振幅(m)
%?????????.omg;???????//近地點(diǎn)角距
%? ??????.OMG0dot;???//升交點(diǎn)赤經(jīng)變化率
%? ??????.I0dot;?????//軌道傾角變化率
%? ??????.ISL2;??????//L2?數(shù)據(jù)標(biāo)志
%? ??????.GpsWn;?????//GPS?week?number
%? ??????.ISL2P;?????//L2?P?數(shù)據(jù)標(biāo)志
%?????????.SatAccu;???//The?accuracy?of?the?satellite(m)
%? ??????.SatHth;????//The?health?of?the?Satellite?(MSB)
%? ??????.Tgd;???????//單頻接收機(jī)延遲改正數(shù)
%? ??????.IODC;??????//時(shí)鐘數(shù)據(jù)有效期
%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);?????????????%轉(zhuǎn)換成GPS周秒
EphDat(1).a0=str2num(strTemp(23:41));??????%DE需要轉(zhuǎn)化。。。。。。。。。。
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
評(píng)論
共有 條評(píng)論