% step2:读取O文件
%
%
function [X_pre,Y_pre,Z_pre,T]=readO(PRN_use)
%% O
fid=fopen('BDDatas\shid017xALL.16O','r');
rdcell = textread('BDDatas\shid017xALL.16O','%s');
sta = fclose(fid);
Length = length(rdcell);
%区分头文件和记录数据
for i = 1:Length
n(i) = strcmp('HEADER',rdcell(i));
if strcmp('XYZ',rdcell(i)) == 1
Length_xyz = i;
end
if n(i) == 1
i2 = i;
break;
end
end
rdnew = rdcell(i2+1:Length);
%观测到的卫星数量和PRN号
satt=strcat(rdnew{8},rdnew{9});
N=(length(satt)-2)/3;
sat_PRN1=[];
sat_PRN2=zeros(N,1);
for i=1:N
sat_PRN1=[sat_PRN1,satt(3*i)];
sat_PRN2(i)=str2num(satt(3*i+1))*10+str2num(satt(3*i+2));
end
%每份记录长度
M = 244;
%如果sign=1,则观测数据文件中有所测算的卫星
sign = 0;
num = 1;
for i=1:N
if sat_RPN1(i)=='G' && sat_RPN2(i) == PRN_use
sign=1;
break;
end
num = num+1;
end
%G02卫星为num=7
MM = 8; %每个GPS卫星记录长度
if sign == 1
for i=1:round(length(rdcell)/M)
Y = str2num(rdcell{1+(num-1)*MM});
M = str2num(rdcell{2+(num-1)*MM});
D = str2num(rdcell{3+(num-1)*MM});
hor = str2num(rdcell{4+(num-1)*MM});
min = str2num(rdcell{5+(num-1)*MM});
sec = str2num(rdcell{6+(num-1)*MM});
H = hor+min/60+sec/3600;
T_JD = round(365.25*Y)+round(30.6001*(M+1))+D+H/24+1720981.5;
%precise ephemeris
X_pre(i) = str2num(rdcell{10+(num-1)*MM});
Y_pre(i) = str2num(rdcell{11+(num-1)*MM});
Z_pre(i) = str2num(rdcell{12+(num-1)*MM});
T(i) = (T_JD-2444244.5-round((T_JD-2444244.5)/7)*7)*24*3600;
end
end