文件用UltraEdith32打开如下:
2.11 NAVIGATION DATA G (GPS) RINEX VERSION / TYPE
DAT2RINW 3.10 001 1 16APR08 9:51:13 PGM / RUN BY / DATE
COMMENT
.0000D+00 .0000D+00 .0000D+00 .0000D+00 ION ALPHA
.0000D+00 .0000D+00 .0000D+00 .0000D+00 ION BETA
.000000000000D+00 .000000000000D+00 0 1536 DELTA-UTC: A0,A1,T,W
0 LEAP SECONDS
END OF HEADER
3 08 1 8 2 0 0.0 .169645063579D-03 .545696821064D-11 .000000000000D+00
.360000000000D+02 .168125000000D+02 .566059288332D-08 .187730600259D+01
.827014446259D-06 .103016884532D-01 .574626028538D-05 .515365054893D+04
.180000000000D+06 -.223517417908D-06 .119458216673D+01 -.614672899246D-07
.925474060201D+00 .250531250000D+03 .804069353196D+00 -.846213854544D-08
.442875597306D-09 .100000000000D+01 .146100000000D+04 .000000000000D+00
.240000000000D+01 .000000000000D+00 -.419095158577D-08 .360000000000D+02
.175626000000D+06 .400000000000D+01
8 08 1 8 2 0 0.0 -.136284623295D-03 -.136424205266D-11 .000000000000D+00
.630000000000D+02 -.134843750000D+03 .393373511542D-08 -.219239155871D+00
-.722706317902D-05 .101347706513D-01 .461563467979D-05 .515365814018D+04
.180000000000D+06 .195577740669D-06 -.746096452266D+00 -.108033418655D-06
.981573463389D+00 .300781250000D+03 .285613712656D+01 -.800961963421D-08
-.336085437258D-09 .100000000000D+01 .146100000000D+04 .000000000000D+00
.340000000000D+01 .000000000000D+00 -.419095158577D-08 .630000000000D+02
.175638000000D+06 .400000000000D+01
一个同学让我帮忙用MATLAB读取GPS导航电文数据,我现在对GPS还不了解,也没仔细看数据文件的格式说明,(我本来把D当E,不知道怎么回事儿MATLAB自己就这么处理了),试着读了下。下面是MATLAB的脚本文件
%%%%%%%%%%%%%
%打开文件
fid=fopen('90540080.nav');
%跳过文件头 方法比较笨
while 1
tline=fgets(fid);
if findstr(tline, 'END OF HEADE')>1
break;
end
end
%读取导航电文数据
i=1;
while ~feof(fid)
tmpstr= fscanf(fid,'%s',7);%之所以这样是因为文件最后有空白行,只用feof不能很好的结束文件
if tmpstr %或者数据最后的空白行本来没有吧
h(i).p = tmpstr; %最近喜欢MATLAB中的structure,就用了
for j=1:29
q(j)=str2num(fscanf(fid,'%s',1));
end
h(i).d=q;
i=i+1;
else
break;
end
end
fclose(fid);
format long;
%%%%%%%%%%%%%