%%
function [ ri,vi,d_0 ] = satelite( svnum,t,dsheft,dt)
%satelite函数用于计算卫星的坐标、速度和伪距
%svnum为卫星编号,t为时间,dsheft为计算出的延时
%ri为卫星坐标,vi为卫星速度,d_0为真实距离
u=3.986005*10^14;%地球引力常数u
w=(rem(svnum,4)-1)*pi/2;%近地点辐角w
i=55/180*pi;%轨道倾角
Afs=fix(svnum/4)*pi/3;%升焦点赤经Ascending focal scab
a=2.6609*10^7;%半长轴a
tp=0;%时间基准tp
M=sqrt(u/a^3)*(t-tp);%平近点角M
e=0.01;%偏心率e
E=M;%偏近点角E
threshold=0.0001;%阈值
while(abs(E-M-e*sin(E))>threshold)
E=M+e*sin(E);
end
Tay=2*atan(sqrt((1+e)/(1-e))*tan(E/2))/pi*180;%真近点角Trueanomaly
Lz_Afs=[cos(Afs),sin(Afs),0;-sin(Afs),cos(Afs),0;0,0,1];
Lx_i=[1,0,0;0,cos(i),sin(i);0,-sin(i),cos(i)];
Lz_u=[cos(w+Tay/180*pi),sin(w+Tay/180*pi),0;-sin(w+Tay/180*pi),cos(w+Tay/180*pi),0;0,0,1];
F_oi=Lz_u*Lx_i*Lz_Afs;%坐标变换矩阵
p=a*(1-e*e);%半通径
ro_x=p/(1+e*cos(Tay/180*pi));%半径
ri=F_oi'*[ro_x,0,0]';%惯性系中位置坐标
vo_x=sqrt(u/p)*e*sin(Tay/180*pi);
vo_y=sqrt(u/p)*(1+e*cos(Tay/180*pi));
vi=F_oi'*[vo_x,vo_y,0]';%惯性系中速度坐标
d_0=(dsheft+dt+unifrnd(-0.01,0.01))*3*10^8/(1023*8);
end
%%
评论0