资源简介
由广播星历,通过matlab程序简易计算卫星坐标。必须有广播星历
代码片段和文件信息
function y=coo_sat(t) %%%%输入格式为[5 09 3 16 10 00 0.0]的卫星号和时间
format long
[fnamefilepath] = uigetfile(‘*.09N‘‘星历文件数据文件名‘);
fid=fopen(strcat(filepathfname)‘rt‘);
dat0=textread(strcat(filepathfname)‘%s‘10000); %以字符串形式读到文件结束
n=24;
dat0=dat0(n+1:end:);
sz=size(dat0);
for i=1:sz(1)
dat(i)=str2num(str2mat(dat0(i)));
end
PRN=[];Y=[];M=[];D=[];H=[];MIN=[];SEC=[];
for i = 0:sz(1)/38-1
PRN(i+1)=dat(1+38*i);Y(i+1)=dat(2+38*i);M(i+1)=dat(3+38*i);D(i+1)=dat(4+38*i);H(i+1)=dat(5+38*i);MIN(i+1)=dat(6+38*i);SEC(i+1)=dat(7+38*i);
end
% time0=inputdlg(‘请输入星历号和时间信息.如:9 09 3 17 8 0 0.0‘‘输入‘)
% time=fscanf(time0‘%f‘7);
v=[];
for i = 1:sz(1)/38
if t(1)==PRN(i)&t(2)==Y(i)&t(3)==M(i)&t(4)==D(i)&abs(t(5)*60+t(6)-H(i)*60-MIN(i))<60;
v=i;
break
end
end
if isempty(v);
msgbox(‘无法用此广播星历文件计算此时此时刻该星的坐标或计算不准确‘‘提示‘);
return
end
if t(2)>20
t(2)=t(2)+1900;
else
t(2)=t(2)+2000;
end
y=t(2);m=t(3);d=t(4);h=t(5);min=t(6);sec=t(7);
af0=dat(8+(v-1)*38);af1=dat(9+(v-1)*38);af2=dat(10+(v-1)*38);
aode=dat(11+(v-1)*38);Crs=dat(12+(v-1)*38);deltan=dat(13+(v-1)*38);M0=dat(14+(v-1)*38);
Cuc=dat(15+(v-1)*38);
e=dat(16+(v-1)*38);Cus=dat(17+(v-1)*38);sqra=dat(18+(v-1)*38);
toe=dat(19+(v-1)*38);Cic=dat(20+(v-1)*38);omu_0=dat(21+(v-1)*38);Cis=dat(22+(v-1)*38);
i0=dat(23+(v-1)*38);Crc=dat(24+(v-1)*38);omg=dat(25+(v-1)*38);omu_d=dat(26+(v-1)*38);
iDot=
评论
共有 条评论