GPS测量与数据处理实验报告 - 图文(2)

2020-04-17 05:01

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 the fifth line EphDat(1).I0=str2num(strTemp(1:22)); EphDat(1).Crc=str2num(strTemp(23:41)); EphDat(1).omg=str2num(strTemp(42:60)); EphDat(1).OMG0dot=str2num(strTemp(61:79)); strTemp=fgets(fp); %read the sixth line EphDat(1).I0dot=str2num(strTemp(1:22)); EphDat(1).ISL2=str2num(strTemp(23:41)); EphDat(1).GpsWn=str2num(strTemp(42:60)); EphDat(1).ISL2P=str2num(strTemp(61:79)); strTemp=fgets(fp); %the seventh line EphDat(1).SatAccu=str2num(strTemp(1:22)); EphDat(1).SatHth=str2num(strTemp(23:41)); EphDat(1).Tgd=str2num(strTemp(42:60)); EphDat(1).IODC=str2num(strTemp(61:79)); strTemp=fgets(fp); %the eigth line %read the other epochs while(1) strTemp=fgets(fp); if(strTemp==-1) break; end TempEph.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 TempEph.toc=ConvertGpsTime(Year,Mon,Day,THour,TMin,TSec); %判断是否有新的星历出现,如果没有则增加 Increase=true; for i=1:length(EphDat)

if(EphDat(i).SatPRN==TempEph.SatPRN) if(abs(TempEph.toc-EphDat(i).toc)<3600) Increase=false; break; end end end if(~Increase) for i=1:7 %读入剩余的7行 fgets(fp); end continue; % the next eph end TempEph.a0=str2num(strTemp(23:41)); TempEph.a1=str2num(strTemp(42:60)); TempEph.a2=str2num(strTemp(61:79)); strTemp=fgets(fp);; %read the second line TempEph.IODE=str2num(strTemp(1:22)); TempEph.Crs=str2num(strTemp(23:41)); TempEph.DetaN=str2num(strTemp(42:60)); TempEph.M0=str2num(strTemp(61:79)); strTemp=fgets(fp); %read the third line TempEph.Cuc=str2num(strTemp(1:22)); TempEph.e=str2num(strTemp(23:41)); TempEph.Cus=str2num(strTemp(42:60)); TempEph.sqrtA=str2num(strTemp(61:79)); strTemp=fgets(fp); %read the fourth line TempEph.Toe=str2num(strTemp(1:22)); TempEph.Cic=str2num(strTemp(23:41)); TempEph.OMG0=str2num(strTemp(42:60)); TempEph.Cis=str2num(strTemp(61:79)); strTemp=fgets(fp); %read the fifth line TempEph.I0=str2num(strTemp(1:22)); TempEph.Crc=str2num(strTemp(23:41)); TempEph.omg=str2num(strTemp(42:60)); TempEph.OMG0dot=str2num(strTemp(61:79)); strTemp=fgets(fp); %read the sixth line TempEph.I0dot=str2num(strTemp(1:22)); TempEph.ISL2=str2num(strTemp(23:41)); TempEph.GpsWn=str2num(strTemp(42:60)); TempEph.ISL2P=str2num(strTemp(61:79)); strTemp=fgets(fp); %the seventh line TempEph.SatAccu=str2num(strTemp(1:22)); TempEph.SatHth=str2num(strTemp(23:41)); TempEph.Tgd=str2num(strTemp(42:60)); TempEph.IODC=str2num(strTemp(61:79)); strTemp=fgets(fp); %the eigth line

num_eph=length(EphDat)+1; EphDat(num_eph)=TempEph; end fclose(fp); return; ◆ 所编程序 function EphDat = Read_N_Renix %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; //时钟数据有效期 ?gin program global EphDat EphDat=struct; [filename,pathname]=uigetfile('*.**N','读取GPS广播星历文件'); fid1=fopen(strcat(pathname,filename),'rt'); if(fid1==-1) msgbox('Input File or Path is not correct','warning ','warn'); return; end while(1) temp=fgets(fid1); header=findstr(temp,'END OF HEADER ');

if(~isempty(header)) break; end end i=1; while(1) temp=fgets(fid1); if(temp==-1) break; end EphDat(i).PRN=str2num(temp(1:2)); year=str2num(temp(4:5)); EphDat(i).toc=Time_MJD(year,str2num(temp(7:8)),str2num(temp(10:11)),str2num(temp(13:14)),str2num(temp(16:17)),str2num(temp(19:22))); EphDat(i).a0=str2num(temp(23:41)); EphDat(i).a1=str2num(temp(42:60)); EphDat(i).a2=str2num(temp(61:79)); temp=fgets(fid1); EphDat(i).idoe=str2num(temp(4:22)); EphDat(i).Crs=str2num(temp(23:41)); EphDat(i).dn=str2num(temp(42:60)); EphDat(i).M0=str2num(temp(61:79)); temp=fgets(fid1); EphDat(i).Cuc=str2num(temp(4:22)); EphDat(i).e=str2num(temp(23:41)); EphDat(i).Cus=str2num(temp(42:60)); EphDat(i).sqa=str2num(temp(61:79)); temp=fgets(fid1); EphDat(i).toe=str2num(temp(4:22)); EphDat(i).Cic=str2num(temp(23:41)); EphDat(i).omg0=str2num(temp(42:60)); EphDat(i).Cis=str2num(temp(61:79)); temp=fgets(fid1); EphDat(i).i0=str2num(temp(4:22)); EphDat(i).Crc=str2num(temp(23:41)); EphDat(i).w=str2num(temp(42:60)); EphDat(i).omg=str2num(temp(61:79)); temp=fgets(fid1); EphDat(i).iDot=str2num(temp(4:22)); EphDat(i).cflgl2=str2num(temp(23:41)); EphDat(i).weekno=str2num(temp(42:60)); EphDat(i).pflgl2=str2num(temp(61:79)); temp=fgets(fid1); EphDat(i).svacc=str2num(temp(4:22)); EphDat(i).svhlth=str2num(temp(23:41)); EphDat(i).tgd=str2num(temp(42:60)); EphDat(i).aodc=str2num(temp(61:79)); temp=fgets(fid1); EphDat(i).ttm=str2num(temp(4:22)); if(i~=1) %删除重复数据 for k= i-1:i if (EphDat(i-1).PRN~=EphDat(i).PRN) break; elseif abs(EphDat(i-1).toc-EphDat(i).toc)<0.001

i=i - 1; end end end i=i + 1; End 教师批语与成绩评定: 评阅教师: 年 月 日


GPS测量与数据处理实验报告 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:古诗填空练习题(附答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: