File Exchange

image thumbnail

Optimal Impulsive Orbital Transfer

version (465 KB) by David Eagle
MATLAB script for the solution of the one and two impulse orbit transfer between two Earth orbits.


Updated 14 Dec 2017

View License

PDF document and MATLAB script called oota_matlab.m that can be used to determine optimum one and two impulse orbital transfers between non-coplanar circular and elliptical orbits. The method is general and the initial and final orbits need not be coapsidal. The algorithm is based on the orbit transfer and rendezvous work of Gary McCue, Gentry Lee and David Bender, described in “Numerical Investigation of Minimum Impulse Orbital Transfer”, AIAA Journal, 3, 2328-2334 (1965); and “An Analysis of Two-Impulse Orbital Transfer”, AIAA Journal, 2, 1767-1773 (1964).

Comments and Ratings (5)

Umut Demir


Thanks for the code but I want to make the calculations only for an interval, for instance; leave the initial orbit between 180 and 200 true anomalies. Could you please help me?


“Numerical Investigation of Minimum Impulse Orbital Transfer”, AIAA Journal, 3, 2328-2334 (1965);

This is the correct citation.


Yes. Hohmann only describes a transfer between two coplaner circular orbits. This specifically solves the more general problem of minimizing the delta-v between orbits with eccentricities less than 1 (general elliptical problem that includes circular) that might have an inclination difference between them or even be on a different ascending node. The minimum solution will split inclination change in between the two burns.

C.J. Harris

Are there any benefits to this over a simple Hohmann orbital transfer?


Minor editing updates. Additional dimension statements for vectors and arrays.

Script now uses primer vector theory to determine optimality of solutions. Also provides summary and detailed text files of the solutions(s). PDF document updated to reflect these changes.

Updated to create graphics display of the orbit transfer. Time-of-flight bug fix and document update also.

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