26 lines
667 B
Matlab
26 lines
667 B
Matlab
|
function [az, el] = satellite_az_el(SP, RP)
|
|||
|
%% <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>(el), <20>ͷ<EFBFBD>λ<EFBFBD><CEBB>(az)
|
|||
|
% get_satellite_az_el: computes the satellite azimuth and elevation
|
|||
|
% given the position of the user and the satellite in ECEF
|
|||
|
% : SP: <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ECEF
|
|||
|
% RP: <20>û<EFBFBD>λ<EFBFBD><CEBB>ECEF
|
|||
|
% Output Args:
|
|||
|
% az: azimuth: <20><>λ<EFBFBD><CEBB>
|
|||
|
% el: elevation<6F><6E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
% <20>ο<EFBFBD> GPS ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> л<><D0BB>
|
|||
|
|
|||
|
[lat, lon, ~] = ch_ECEF2LLA(RP);
|
|||
|
|
|||
|
C_ECEF2ENU = [-sin(lon) cos(lon) 0; -sin(lat)*cos(lon) -sin(lat)*sin(lon) cos(lat); cos(lat)*cos(lon) cos(lat)*sin(lon) sin(lat)];
|
|||
|
|
|||
|
enu = C_ECEF2ENU*[SP - RP];
|
|||
|
|
|||
|
% nroamlized line of silght vector
|
|||
|
enu = enu / norm(enu);
|
|||
|
|
|||
|
az = atan2(enu(1), enu(2));
|
|||
|
el = asin(enu(3)/norm(enu));
|
|||
|
end
|
|||
|
|
|||
|
|