File Exchange

image thumbnail

Satellite Orbit Modeling

version (19.1 MB) by Meysam Mahooti
Modeling of satellite's perturbed motion (special perturbations approach)


Updated 24 Mar 2020

View Version History

View License

Orbit modeling is the process of creating mathematical models to simulate motion of a massive body as it moves in orbit around another massive body due to gravity. Other forces such as gravitational attraction from tertiary bodies, air resistance, solar pressure, or thrust from a propulsion system are typically modeled as secondary effects. Directly modeling an orbit can push the limits of machine precision due to the need to model small perturbations to very large orbits. Because of this, perturbation methods are often used to model the orbit in order to achieve better accuracy. Orbit models are typically propagated in time and space using special perturbation methods. This is performed by first modeling the orbit as a Keplerian orbit. Then perturbations are added to the model to account for the various perturbations that affect the orbit. Special perturbations can be applied to any problem in celestial mechanics, as it is not limited to cases where the perturbing forces are small. Special perturbation methods are the basis of the most accurate machine-generated planetary ephemerides such as Jet Propulsion Laboratory Development Ephemerides.
Here I have used the following integrator and force model to simulate satellite's perturbed motion:
Integrator: Variable-order Radau IIA integrator with step-size control.
Force Model: gravity field of the Earth (GGM03S model), gravity of the solar system planets (positions of the planets are computed by JPLDE430), drag effect using NRLMSISE00 atmospheric density model, solar radiation pressure using cylindrical model, solid Earth tides (IERS Conventions 2010), ocean tides and general relativity.
Simulation starts by running test_Envisat.m. In InitialState.txt set initial values for your favorite satellite. In test_Envisat.m you can consider different perturbations by setting them 1 as follows:
AuxParam.n = 40; % maximum degree of central body's gravitation field
AuxParam.m = 40; % maximum order of central body's gravitation field
AuxParam.sun = 1; % perturbation of the Sun
AuxParam.moon = 1; % perturbation of Moon
AuxParam.planets = 1; % perturbations of planets
AuxParam.sRad = 1; % solar radiation pressure
AuxParam.drag = 1; % atmospheric drag
AuxParam.SolidEarthTides = 1; % solid Earth tides
AuxParam.OceanTides = 1; % ocean tides
AuxParam.Relativity = 1; % general relativity
Montenbruck O., Gill E.; Satellite Orbits: Models, Methods and Applications; Springer Verlag, Heidelberg; Corrected 3rd Printing (2005).
Montenbruck O., Pfleger T.; Astronomy on the Personal Computer; Springer Verlag, Heidelberg; 4th edition (2000).
Seeber G.; Satellite Geodesy; Walter de Gruyter, Berlin, New York; 2nd completely revised and extended edition (2003).
Vallado D. A; Fundamentals of Astrodynamics and Applications; McGraw-Hill , New York; 3rd edition (2007).
NIMA. 2000. Department of Defense World Geodetic System 1984. NIMA-TR 8350.2, 3rd ed, Amendment 1. Washington, DC: Headquarters, National Imagery and Mapping Agency.

Cite As

Meysam Mahooti (2021). Satellite Orbit Modeling (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (17)

Mehmet Rauf Geden

Kazuko Hagiwara

Murat Bulut

Feng Xuefeng

Andy Williams


I think some of the coding is useful for modeling the satellite orbits, but first of all, the users need to prepare a very good background in astronomy. And if you could provide a detailed explanation of the code, it would better. Thanks

Andrea Nardo

It is mainly an useful port to matlab of Montenbruck's c++ classes attached to his book; those who do not understand how to use this library, should study the book.

Jayne Baraky

Lady Gaga

Regardless of rumors, it works fine! I hope critics produce better versions or give a piece of advice to improve your simulation.

Evan Mossel

This is the same with all of his libraries. I tried using another one of his and they is little to no documentation. Even worse is that I e-mailed the author of this library and all he provided was links to useless websites. He does not know what he is doing because I believe he is simply copying this from another source, or he in not the true creator. If I could give it 0 stars I would. WOULD NOT RECOMMEND.

Ke Feng

A bunch of functions piled together, without any documentation. I can't even figure out where to get started. It's totally a waste of time to look at this.


You ignore my question, if this is your code of if you took it from other sources without mentioning it, as in several of you other submissions. Therefore I assume, that these codes are written by other persons and publishing them under a BSD license is neither smart nor legal. Even the explanation above are copied from - you do not even describe in your own words, what the codes should do.

To any of the hundreds of downloaders and voters of Meysam's submissions: I do not understand how any of his codes is used. Please post an example for a meaningful usage in the comments. I see a massive difference between the large number of downloads and positive ratings, and the lack of any usable documentation or instructions.


No, I have not overseen it, but there is no description of what the code does. In the license file you state, that this is your code. Is this correct or did you take the code from another source, e.g. a book, like in at least some of your other FEX submissions?

It is obvious that you get a lot of 4 and 5 star ratings by the same persons, who did not do anything else but voting for your submissions. Copy right infringements and massive self voting - this will not be useful for your scientific reputation. It might look cool to appear in the top 100 of the FEX contributors, but there are much better ways to participate constructively in the Matlab community.


Perhaps this is a useful and powerful tool. Unfortunately the documentation is very lean. I did not even find out which function to call to start the computations, and the explanations in here and in the files do not clarify what is calculated at all.

But there are 36 downloads and 3 good ratings. Perhaps I have overseen a Readme file?

peter anderson

terry moore

Sam Davidson

MATLAB Release Compatibility
Created with R2019b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!