|
|
function ek = Kepler(mk,e) |
|
|
|
|
|
% ek = Kepler(mk,e) |
|
|
% Kepler - Solves Kepler's equation for ek through iteration. |
|
|
% |
|
|
% Inputs: mk: mean anomaly (rad) |
|
|
% e: eccentricity |
|
|
% Outputs: ek: eccentric anomaly |
|
|
% |
|
|
% NOTE: mk and e may be a vectors of the same dimensions, or one may be a scalar |
|
|
% the output is a vector of the same dimensions as the input vector |
|
|
|
|
|
%Author: Frank van Diggelen |
|
|
%Open Source code for processing Android GNSS Measurements |
|
|
|
|
|
%Check inputs size |
|
|
if min(size(mk))>1 |
|
|
error('mk must be a vector or a scalar, not a matrix') |
|
|
end |
|
|
if min(size(e))>1 |
|
|
error('e must be a vector or a scalar, not a matrix') |
|
|
end |
|
|
if length(mk)>1 && length(e)>1 && any(size(mk)~=size(e)) |
|
|
%both are vectors, they must have the same dimensions |
|
|
error('If mk and e are both vectors they must have the same dimensions') |
|
|
end |
|
|
|
|
|
err = 1; |
|
|
|
|
|
ek=mk; |
|
|
iterCount = 0; |
|
|
maxIterCount = 20; |
|
|
while any(abs(err) > 1e-8) && iterCount < maxIterCount |
|
|
err = ek - mk - (e.*sin(ek)); |
|
|
ek = ek - err; |
|
|
iterCount = iterCount + 1; |
|
|
|
|
|
if iterCount == maxIterCount |
|
|
fprintf('Failed convergence on Kepler''s equation.\n') |
|
|
end |
|
|
end |
|
|
|
|
|
end %end of function Kepler |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
|
|
|
|
% 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. |
|
|
|
|
|
|