資源簡介
由廣播星歷,通過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=
評論
共有 條評論