UWBIns/lib/gnss/satellite_az_el.m

26 lines
667 B
Matlab
Raw Permalink Normal View History

2025-04-16 20:15:33 +08:00
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