SGP4 Orbit Determination

Angles-Only Initial Orbit Determination & TLE Generation
19 Downloads
Updated 3 Apr 2026

View License

This MATLAB project implements an angles-only SGP4 orbit determination system for Earth-orbiting satellites. It ingests multi-pass topocentric observations — right ascension (RA) and declination (Dec) in J2000 — from a ground station defined by its geodetic longitude, latitude, and altitude. An initial orbit estimate is bootstrapped using the classical Gauss method (anglesgauss.m), which solves for position and velocity at a middle epoch from three optical sightings. That Keplerian state is then converted into SGP4-compatible mean elements and refined through a multi-pass Levenberg–Marquardt least-squares optimizer, which minimizes RA/Dec residuals across all observed passes by propagating the SGP4 model forward (or backward) to each observation epoch. The pipeline correctly handles Earth orientation parameters (EOP) via IERS data and applies the full TEME→J2000 frame transformation chain — including precession, nutation, and sidereal rotation — to compute accurate topocentric range vectors. The final product is a TLE (Two-Line Element set) for the observed object, formatted with proper checksum encoding, which can be used directly in any SGP4-compatible propagator.

Cite As

Meysam Mahooti (2026). SGP4 Orbit Determination (https://uk.mathworks.com/matlabcentral/fileexchange/183517-sgp4-orbit-determination), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2025b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Version Published Release Notes
2.1.0

Added version 2.1.0, which includes an implementation of the Levenberg-Marquardt nonlinear least-squares solver, removing the need for the Optimization Toolbox.

2.0.0

Line 21 in the ecef2eci.m file was uncommented, and line 22 was commented out to ensure that the ecef2eci transformation is consistent with the eci2teme transformation.

1.1.1

test_SGP4OD.m was modified to avoid negative values of the eccentricity, and the nearest NORAD TLE to the epoch of the generated TLE was inserted into the readme file for comparison.

1.1.0

The code was revised and optimized.

1.0.0