資源簡介
GPS定位衛星位置解算MATLAB仿真,可直接運行,對GPS導航算法有很大的參考價值!

代碼片段和文件信息
%--------------------------------------------------------------------------
%?定義常量
%--------------------------------------------------------------------------
GM_WGS84?=?3986005e+8;????????????%WGS84引力常數
omega_e_WGS84?=?7.2921151467e-5;??%WGS84地球自轉角速度
sqrt_a?=?0.515365531e+4;??????????%電文中給出的衛星軌道橢圓長半軸的平方根
delta_n?=?4.249105564e-9;?????????%電文中給出的平地點角校正值
toe?=?2.448e+5;???????????????????%電文中給出的參考時刻
M_zero?=?-1.064739758;????????????%電文中給出的參考時刻平近點角
es?=?0.5912038265e-2;?????????????%電文中給出的軌道橢圓偏心率
omega?=?-0.1717457876e+1;?????????%電文中給出的軌道近地點角距
Cus?=?0.2237036824e-5;????????????%電文中給出的升交點角距正弦調和校正振幅
Cuc?=?0.3054738045e-6;????????????%電文中給出的升交點角距余弦調和校正振幅
Cis?=?0.8940696716e-7;????????????%電文中給出的軌道傾角正弦調和校正振幅
Cic?=?-0.8381903172e-7;???????????%電文中給出的軌道傾角余弦調和校正振幅
Crc?=?0.35053125e+3;??????????????%電文中給出的軌道半徑余弦調和校正振幅
Crs?=?0.253125e+1;????????????????%電文中給出的軌道半徑正弦調和校正振幅
i_zero?=?0.9848407943;????????????%電文中給出的參考時刻軌道傾角
i_dot?=?0.7422851197e-50;?????????%電文中給出的軌道傾角變化率
OMEGA_zero?=?0.1038062244e+1;?????%電文中給出的參考時刻升交點赤經
OMEGA_dot?=?-0.8151768125e-8;?????%電文中給出的升交點赤經變化率
t?=?2.390507223e+5;???????????????%衛星信號發射時刻
%--------------------------------------------------------------------------
%?計算觀測時刻GPS衛星在WGS84坐標系的坐標
%--------------------------------------------------------------------------
n_zero?=?sqrt(GM_WGS84)?/?(sqrt_a?*?sqrt_a?*?sqrt_a);
n?=?n_zero?+?delta_n;???????????????%?計算平均角速度
t_k?=?t?-?toe;
while?(t_k?>?302400)
????t_k?=?t_k?-?604800;
end
while?(t_k?-302400)
????t_k?=?t_k?+?604800;
end?????????????????????????????????%?計算觀測時刻到參考時刻的規化時間
M_k?=?M_zero?+?n?*?t_k?+?2*pi;?????????????%?觀測時刻的衛星平近點角
E_k?=?M_k;
E_k1?=?M_k?-?es*sin(E_k);
while?(abs(E_k?-?E_k1)?>?1e-9)
????E_k1?=?E_k;
????E_k?=?M_k?+?es?*?sin(E_k1);
end;????????????????????????????????%?計算觀測時刻的偏近點角
v_k?=?2*atan(sqrt((1+es)/(1-es))*tan(Ek/2));????%計算真近點角
phi_k?=?v_k?+?omega;????????????????%?計算升交距角
C_u?=?Cus*sin(2*phi_k)?+?Cuc*cos(2*phi_k);
C_r?=?Crs*sin(2*phi_k)?+?Crc*cos(2*phi_k);?
C_i?=?Cis*sin(2*phi_k)?+?Cic*cos(2*phi_k);?????????%計算攝動校正項
u_k?=?phi_k?+?C_u;
r_k?=?sqrt_a*sqrt_a*(1-es*cos(E_k))?+?C_r;
i_k?=?i_zero?+?i_dot*t_k?+?C_i;?????%計算攝動校正后的升交距角、衛星矢徑、軌道傾角
x_k?=?r_k?*?cos(u_k);
y_k?=?r_k?*?sin(u_k);???????????????%計算衛星在軌道坐標系中的位置
OMEGA_k?=?OMEGA_zero?+?(OMEGA_dot-omega_e_WGS84)*t_k?-?omega_e_WGS84*toe;
????????????????????????????????????%計算觀測時刻衛星的升交點經度
????????????????????????????????????
X_k?=?x_k*cos(OMEGA_k)?-?y_k*cos(i_k)*sin(OMEGA_k);
Y_k?=?x_k*sin(OMEGA_k)?+?y_k*cos(i_k)*cos(OMEGA_k);
Z_k?=?y_k*sin(i_k);?????????????????%計算衛星在WGS84坐標系中的位置
M_k_dot?=?n;
E_k_dot?=?M_k_dot/[1?-?es*cos(E_k)];%計算信號發射時刻的E_k_dot
v_k_dot?=?sqrt(1-es*es)*E_k_dot/(1-es*cos(E_k));
phi_k_dot?=?v_k_dot;????%計算信號發射時刻的phi_k_dot
C_i_dot?=?2*phi_k_dot*(Cis*cos(2*phi_k)-Cic*sin(2*phi_k));
C_r_dot?=?2*phi_k_dot*(Crs*cos(2*phi_k)-Crc*sin(2*phi_k));
C_u_dot?=?2*phi_k_dot*(Cus*cos(2*phi_k)-Cuc*sin(2*phi_k));
?????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4387??2010-06-09?15:10??GPS定位衛星位置解算MATLAB仿真.m
-----------?---------??----------?-----??----
?????????????????4387????????????????????1
- 上一篇:最終改進版的matlab程序,改正角度和震蕩問題
- 下一篇:matlab均值濾波函數
評論
共有 條評論