function Re2n = RotEcef2Ned(latDeg, lonDeg) % Re2n = RotEcef2Ned(latDeg, lonDeg) % Rotation matrix to convert an ECEF vector to % North, East, Down coordinates, and vice-versa % % inputs: latDeg, lonDeg (degrees) % output: Re2n, 3x3 unitary rotation matrix = % [-sin(lat)*cos(lon), -sin(lat)*sin(lon), cos(lat); % -sin(lon), cos(lon), 0 ; % -cos(lat)*cos(lon), -cos(lat)*sin(lon),-sin(lat)] % % Example: vNed = Re2n*vEcef, % Re2n'*vNed = vEcef %Author: Frank van Diggelen %Open Source code for processing Android GNSS Measurements %CHECK INPUTS if any(size(latDeg)~=[1,1]) || any(size(lonDeg)~=[1,1]) error('Inputs latDeg, lonDeg must be scalars') end D2R = pi/180; %degrees to radians scale factor latRad=D2R*latDeg(:); lonRad=D2R*lonDeg(:); clat = cos(latRad); slat = sin(latRad); clon = cos(lonRad); slon = sin(lonRad); Re2n = zeros(3,3); Re2n(1,1) = -slat.*clon; Re2n(1,2) = -slat.*slon; Re2n(1,3) = clat; Re2n(2,1) = -slon; Re2n(2,2) = clon; Re2n(2,3) = 0; Re2n(3,1) = -clat.*clon; Re2n(3,2) = -clat.*slon; Re2n(3,3) = -slat; end %end of function RotEcef2Ned %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright 2016 Google Inc. % % Licensed under the Apache License, Version 2.0 (the "License"); % you may not use this file except in compliance with the License. % You may obtain a copy of the License at % %     http://www.apache.org/licenses/LICENSE-2.0 % % Unless required by applicable law or agreed to in writing, software % distributed under the License is distributed on an "AS IS" BASIS, % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. % See the License for the specific language governing permissions and % limitations under the License.