• 大小: 5KB
    文件类型: .m
    金币: 2
    下载: 0 次
    发布日期: 2024-02-05
  • 语言: Matlab
  • 标签:

资源简介

本程序是使用matlab编写的GPS单点定位的代码

资源截图

代码片段和文件信息

function [Head_dataSP3_data]=Read_SP3
%读取精密星历文件中的数据
global SP3_data
[filenamefilepath]=uigetfile(‘*.sp3‘‘读取GPS精密星历文件‘);
fid=fopen(strcat(filepathfilename)‘rt‘);
Head_data=struct;
SP3_data =struct;
if(fid==-1)
   msgbox(‘输入的文件或者路径不正确无法正确打开sp3文件‘‘警告信息‘);
   return;
end
% 读取文件头,并将其存入Head_data结构数组中
Head=[];
for i=1:22 %制度文件头的前16行
    line=fgetl(fid);
    Head=[Head;line];%将sp3文件的文件头以字符的形式显示出来,切记此处要保证sp3文件中的头文件的每行字符数是相同的,否则读取将失败
end
%提取文件头第一行的数据
Head_data.Version=Head(11:2);
Head_data.P_or_V=Head(13);
Head_data.start_year=str2num(Head(14:7));
Head_data.start_month=str2num(Head(19:10));
Head_data.start_day=str2num(Head(112:13));
Head_data.start_hour=str2num(Head(115:16));
Head_data.start_minute=str2num(Head(118:19));
Head_data.start_second=str2num(Head(121:31));
Head_data.EpochNum=str2num(Head(133:39));
Head_data.data_type=Head(141:45);
Head_data.Coordinate_system=Head(147:51);
Head_data.Orbit_type=Head(153:55);
Head_data.Institution=Head(157:60);
%第二行
Head_data.GPS_week=str2num(Head(24:7));
Head_data.FirstEpoch_weeksecond=str2num(Head(29:23));
Head_data.Epoch_interval=str2num(Head(225:38));
Head_data.MJD_zhengshu=str2num(Head(240:44));
Head_data.MJD_xiaoshu=str2num(Head(246:60));
%第三、四行-------提取观测卫星的PRN编号
Head_data.SatNum=str2num(Head(35:6));
PRN=strcat(Head(310:60)Head(410:60));
L=length(PRN)/3;
SP3_PRN=[];
for i=1:L
    Sp3_PRN=str2num(PRN((3*i-1):3*i));
    if Sp3_PRN==0
        continue;
    end
    SP3_PRN=[SP3_PRN Sp3_PRN];
end
Head_data.SP3_PRN=SP3_PRN;
%第八、九行-----提取相应卫星的精度
SatAccu=strcat(Head(810:60)Head(910:60));
L=length(SatAccu)/3;
SP3_SatAccu=[];
for i=1:L
    Sp3_SatAccu=str2num(SatAccu((3*i-1):3*i));
    if Sp3_SatAccu==0
        continue;
    end
    SP3_SatAccu=[SP3_SatAccu Sp3_SatAccu];
end
Head_data.SP3_SatAccu=SP3_SatAccu;
%第十五行-----读取标准差的浮点基数
Head_data.pos_jishu=str2num(Head(154:13));
Head_data.Satclock_jishu=str2num(Head(1515:26));
%--------------------End of the reading of the Fileheader------------------

%--------------------读取卫星坐标及卫星钟钟差--------------------------------
%读取的卫星的三维坐标的单位为km,卫星钟差的单位为us
t=1;
while 1 
    line=fgetl(fid);
    result=findstr(line‘EOF‘);
    if(isempty(result))
        SP3_data(t).year=str2num(line(4:7));
        SP3_data(t).month=str2num(line(9:10));
        SP3_data(t).day=str2num(

评论

共有 条评论

相关资源