www.gusucode.com > gps卫星位置预报,MATLAB编写,有动画界面源码程序 > code5/gps_final_new/DrawSatOrbit.m
function DrawSatOrbit(PRN,T,Toe,M0,sqrt_as,es,w,delta_i,omega0,dot_omega); i0=delta_i+0.3*pi; i=0; for Mk=0:0.1:2*pi i=i+1; %计算规化时间Tk Tk=T-Toe; %计算卫星的平均角速度n GM=3.986005e+14; %地球引力常数 n0=sqrt(GM)/sqrt_as^3; n=n0; %计算信号发射时刻的平近点角Mk, 值需要在0到2pi之间 %Mk=mod(M0+n*Tk,2*pi); %计算信号发射时刻的偏近点角Ek TempEk=Mk; dEk=1; while(abs(dEk)>0.00001) %迭代法 Ek1=Mk+es*sin(Ek0) TempEkNext=Mk+es*sin(TempEk); dEk=TempEk-TempEkNext; TempEk=TempEkNext; end Ek=TempEk; %计算信号发射时刻的真近点角Fk,值需要在(-pi,pi]范围内。 Fk=2*atan(sqrt((1+es)/(1-es))*tan(Ek/2)); %计算信号发射时刻的升交点角距Pk Pk=w+Fk; %计算摄动校正后的升角点角距uk,卫星矢径长度rk和轨道倾角ik uk=Pk; rk=sqrt_as^2*(1-es*cos(Ek)); ik=i0; %计算信号发射时刻卫星在轨道平面的位置(xpk,ypk) xpk=rk*cos(uk); ypk=rk*sin(uk); %计算信号发射时刻的升交点赤经Omegak dot_omega_e=7.2921151467e-05; omegak=omega0+(dot_omega-dot_omega_e)*Tk-dot_omega_e*Toe; %计算卫星在WGS-84地心地固坐标系(ECEF)中的坐标(xk,yk,zk) xk(1,i)=xpk*cos(omegak)-ypk*cos(ik)*sin(omegak); yk(1,i)=xpk*sin(omegak)+ypk*cos(ik)*cos(omegak); zk(1,i)=ypk*sin(ik); end plot3c(xk/1000,yk/1000,zk/1000,2); hold on;