function HeadO=ReadObsHead
[fname,fpath]=uigetfile('*.*O','选择一个O文件');
HeadO.O_filename=strcat(fpath,fname);
fid=fopen(HeadO.O_filename,'rt');
if (fid==-1)
msgbox('文件不存在','警告','warn');
return;
end
k=0;
while(1)
s=fgets(fid);
if (strfind(s,'RINEX VERSION'))
HeadO.Rtype=str2double(s(6:10));
elseif(strfind(s,'APPROX POSITION XYZ'))
HeadO.XYZ(1)=str2double(s(1:14));
HeadO.XYZ(2)=str2double(s(15:28));
HeadO.XYZ(3)=str2double(s(29:42));
elseif (strfind(s,'MARKER NAME'))
HeadO.staname=s(1:4);
elseif (strfind(s,'MARKER NUMBER'))
HeadO.stanum=s(1:4);
elseif (strfind(s,'# / TYPES OF OBSERV'))
HeadO.PRNtype='G';
HeadO.nObstype=str2double(s(6));
for i=1:HeadO.nObstype
HeadO.Obs{i}={s(i*6+5:i*6+6)};
end
elseif (strfind(s,'SYS / # / OBS TYPES'))
k=k+1;
HeadO.PRNtype(k)=char(s(1));
HeadO.nObstype(k)=str2double(s(5:6));
if(HeadO.nObstype(k)>13)
for i=1:13
HeadO.Obs{k,i}=s(i*4+4:i*4+6);
end
s=fgets(fid);
for i=1:HeadO.nObstype(k)-13
HeadO.Obs{k,i+13}=s(i*4+4:i*4+6);
end
else
for i=1:HeadO.nObstype(k)
HeadO.Obs{k,i}=s(i*4+4:i*4+6);
end
end
elseif (strfind(s,'END OF HEADER'))
break;
end
end
下面为读取数据程序,供参考% Read RINEX Observation Datanepoch=0;nobs=0;nlli=0;rnx.epoch=[];rnx.obs=[];rnx.lli=[];while 1? if feof(fid)==1,break,end? line=fgetl(fid);? if isempty(deblank(line)),break,end? if version < 3???????????????????????????????????? ? % Version 2 RINEX? ? % get epoch flag and number of satellites? ? EpStr=line(1:26);? ? EpFlg=sscanf(line(27:29),'%d');? ? NumSat=sscanf(line(