Same orbit, different time, completely different state
You load a TLE into MATLAB and propagate the orbit. Then you compare the position with STK.
The orbital elements look correct. The altitude looks correct. The inclination looks correct. The frame conversion looks correct.
The spacecraft is ahead or behind along the orbit. The ground track appears shifted in time. The position error is large even though the orbit shape is right.
An Orbit Is Not Frozen in Space
A satellite state is not just an orbit shape. It is the spacecraft location on that orbit at a particular time.
The reference time at which the orbital data is valid.
The time at which propagation begins.
How long the state is advanced from the epoch.
UTC, UT1, TT, TAI, GPS time.
The exact output time requested from the propagator.
The spacecraft’s location along the orbit.
LEO motion is fast
In low Earth orbit, a typical spacecraft speed is approximately 7.5 km/s. That means a small timing mistake can become a large along-track position error.
Move the spacecraft forward or backward in time
Adjust the orbit and time offset. The plots compare the correct state with the time-offset state.
Why MATLAB and STK Disagree Even with the Same Orbit
A comparison can fail even when the orbit, frame, and propagator are reasonable. Toggle the assumptions below.
Expected symptom: large position error despite matching orbit shape.
Classify the timing symptom
Select the observed symptom and use the diagnostic cards to decide what to check first.
Debug time before blaming the propagator
Do not assume the file date is the orbit epoch.
MATLAB and STK must start from the same instant.
Compare state A(t) with state B(t), not state B(t + Δt).
UTC, UT1, TT, TAI, GPS time may differ.
Many mistakes come from unit conversion in time.
If states disagree at epoch, initial condition or frame is wrong.
If epoch agrees but 10 minutes later does not, check model and timestep.
Epoch errors usually show strongly along-track.
Use the error pattern
| Symptom | Likely cause |
|---|---|
| Correct orbit shape but satellite ahead | Positive time offset |
| Correct orbit shape but satellite behind | Negative time offset |
| Large along-track error | Epoch/start-time mismatch |
| Error jumps immediately at t = 0 | Wrong initial epoch |
| Error grows nearly linearly | Clock rate or sample spacing mismatch |
| Ground track shape correct but shifted | Output time mismatch |
| MATLAB/STK agree at epoch but diverge later | Propagation model or force-model mismatch |
| Same TLE gives different state | Different epoch interpretation or time scale |
Compare states at the exact same instant
# Wrong idea:
# Comparing states at different times
r_matlab = propagate(tle, start_time="2026-05-04T00:00:00Z")
r_stk = stk_output(time="2026-05-04T00:01:00Z")
error = norm(r_matlab - r_stk)
# Better idea:
# Compare both states at the exact same epoch/time
comparison_time = "2026-05-04T00:00:00Z"
r_matlab = propagate(tle, output_time=comparison_time)
r_stk = stk_output(time=comparison_time)
error = norm(r_matlab - r_stk)
% Wrong:
tMatlab = datetime(2026,5,4,0,0,0);
tSTK = datetime(2026,5,4,0,1,0);
r1 = propagateTLE(tle, tMatlab);
r2 = stkState(tSTK);
err = norm(r1 - r2);
% Correct idea:
% 1. read the TLE epoch
% 2. choose one comparison time
% 3. request MATLAB and STK state at that exact time
% 4. only then compute position error
Why This Matters in Real Mission Analysis
A one-minute timing error can shift the predicted pass by hundreds of kilometres.
The spacecraft may point to where the target was, not where it is.
Timing errors can create false close approaches or hide real ones.
A good propagator can look wrong if compared at the wrong instant.
The TLE epoch is not just metadata. It defines the reference state.
Command timing depends on comparing the correct state at the correct time.
An orbit is not only a path
It is:
All planned sections included
Title, subtitle, message, and topic pills.
MATLAB/STK timing mismatch scenario.
Epoch, start time, duration, time system, sampling, phase.
LEO speed and timing-error cards.
Sliders, orbit plots, error plots, phase plots.
MATLAB/STK checkboxes and diagnostic card.
Symptom selector and diagnostic cards.
Eight numbered checklist cards.
Symptom to likely cause table.
Python and MATLAB pseudo-code blocks.
Ground access, pointing, conjunction, validation.
Path + phase + epoch + time system + duration.