- Settling Time Definition: Settling time is defined as the period needed for the output of a dynamic system to remain within a certain tolerance level of its final value.
- Settling Time Formula: The formula for settling time is determined by taking the negative natural logarithm of the product of the tolerance fraction and the square root of one minus the square of the damping ratio, divided by the product of the damping ratio and the natural frequency. This explains how quickly the system’s output stabilizes within a specific error margin, based on the system’s damping and oscillation characteristics.
- MATLAB Techniques: Settling time can be accurately determined in MATLAB using functions like ‘stepinfo’ which analyze the step response of control systems.
- Control Strategies: Reducing settling time involves adjusting the gains of PID controllers, affecting the system’s response time and stability.
- Root Locus Application: The root locus method helps visualize and calculate the effects of changing system parameters on settling time, useful for system design and analysis.
What is Settling Time?
Settling time Ts is the first time after which the step response stays inside a stated error band around the final value, and remains there.
That interval includes delay, rise, any overshoot and the ring-down until the band is never left again. Overload recovery of an amplifier is a related but separate spec (how a clamped output returns).
Control texts usually quote a 2% or 5% band of the final value. MATLAB stepinfo defaults to 2%.
A second-order system step response with that band marked is below.

Settling Time Formula
For an underdamped second-order plant it depends on damping ζ and natural frequency ωn. A compact envelope form is Ts ≈ −ln(δ)/(ζ ωn) for band δ. The stored line omits the minus sign and the √(1−ζ²) factor derived next.
![]()
The underdamped unit-step response (0<ζ<1) is
![Rendered by QuickLaTeX.com \[ C(t) = 1 - \left( \frac{e^{-\zeta \omega_n t}}{\sqrt{1-\zeta^2}} \right) sin(\omega_d t + \theta) \]](https://www.staging.electrical4u.com/wp-content/ql-cache/quicklatex.com-46e82c76f24842ecc2a09410f0bfc043_l3.png)
That splits into an exponential envelope and a sinusoid:
![Rendered by QuickLaTeX.com \[ exponential \, component = \left( \frac{e^{-\zeta \omega_n t}}{\sqrt{1-\zeta^2}} \right) \]](https://www.staging.electrical4u.com/wp-content/ql-cache/quicklatex.com-8991604f7c9cba43278d75eba1819cdc_l3.png)
![]()
Settling is judged from the envelope, not by cancelling the sine. Set the envelope (tolerance fraction) equal to the exponential factor when you want a closed form. The sine still oscillates inside that envelope.
![]()
![]()
![]()
![]()
![Rendered by QuickLaTeX.com \[ T_S = - \frac{ ln \left( Tolerance \, fraction \times \sqrt{1-\zeta^2} \right)}{\zeta \omega_n} \]](https://www.staging.electrical4u.com/wp-content/ql-cache/quicklatex.com-ffb7fb3dc1a550f04a1054ffcaf8e696_l3.png)
How to Calculate Settling Time
A first order system with unit-step input:
![]()
Unit step:
![]()
So
![]()
![]()
Partial fractions: find A1 and A2.
![]()
![]()
Set s = 0:
![]()
![]()
![]()
Set s = −1/T:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
For a 2% band, 1−C(t) = 0.02:
![]()
![]()
![]()
![]()
![]()
So a first-order lag with time constant T has Ts ≈ 4T for 2% (ln(0.02) ≈ −3.91). That is an envelope/error formula, not a MATLAB measurement.
For the underdamped second-order step,
![]()
The exponential sets how fast the envelope decays.
![]()
![]()
Again take 2%, so 1 − C(t) = 0.02:
![]()
Damping ξ is set by the plant (and any controller). Underdamped means 0<ξ<1.
For moderate damping, √(1−ζ²) is not far from 1, so textbooks drop it and use e^{−ζωn Ts} ≈ 0.02.
![]()
![]()
![]()
![]()
![]()
Ts ≈ 4/(ζ ωn) is that 2% underdamped approximation. It does not apply to ζ ≥ 1 or to a 5% band.
For 5%, 1 − C(t) = 0.05 and ln(0.05) ≈ −3.00, so
![]()
![]()
![]()
![]()
To use those formulas you need ζ and ωn (or the real part σ = ζ ωn of the dominant poles).
| Second-order System | Damping Ratio (ξ) | Setting Time (TS) |
| Underdamped | 0<ξ<1 | |
| Undamped | ξ = 0 | |
| Critical damped | ξ = 1 | |
| Overdamp | ξ > 1 | Depends on dominant pole |
Root Locus Settling Time
On a root locus method plot, a constant-ζ ray and a constant-σ vertical give ωn and ζ of a chosen closed-loop pole, hence an approximate Ts.
Read σ from the real part: Ts ≈ 4/|σ| for the 2% rule on a dominant pair.
Example:
![]()
Design overshoot 20% (Mp = 0.2) for a dominant second-order pair.
![]()
![]()
![]()
![]()
![]()
From the locus (or sisotool) take the dominant pair
![]()
![]()
![]()
![]()
![]()
![]()
![]()
With ξ and ωn (the stored Ts line writes ωm; use ωn):
![]()
![]()
![]()
MATLAB Control System Designer (sisotool) can draw that locus and a 20% overshoot constraint so you can pick the same dominant poles.
A MATLAB root-locus figure is below.

stepinfo on a step response is the usual MATLAB measurement. A unit-step plot is below.

How to Reduce Settling Time
Faster settling is often wanted. It trades with overshoot, actuator effort and noise. There is no universal “must be minimum” number.
A controller is one way to move the closed-loop poles (hence Ts).
PID is a standard controller family for this job. Tune it to the plant and the specs.
Gains KP, KI, KD are tuned to the plant. The next lines are textbook trends for many simple loops, not a guarantee for every process.
Raising KP often changes Ts only a little on a simple second-order plant. Raising KI often lengthens settling. Raising KD often shortens it, until noise and actuator limits appear.
So Kd is the term people raise when they want a shorter Ts, watching rise time, overshoot and steady-state error at the same time. (Stored table header says “Setting Time”.)
How to Find Settling Time in MATLAB
MATLAB: form a tf, call step to plot and use stepinfo to read SettlingTime. Example plant:
![]()
Match this transfer function to the standard second-order form
![]()
Then
![]()
![]()
![]()
![]()
![]()
4/(ζωn) = 4/3 ≈ 1.33 s is the 2% envelope rule. stepinfo on the stored code returns 1.1886 s for this plant, which is the measured last entry into the 2% band. The loop listing is a sketch; use stepinfo for the number.
The listing below uses step and stepinfo:
clc; clear all; close all;
num = [0 0 25];
den = [1 6 25];
t = 0:0.005:5;
sys = tf(num,den);
F = step(sys,t);
H = stepinfo(F,t)
step(sys,t);
Output:
H =
RiseTime: 0.3708
SettlingTime: 1.1886
SettlingMin: 0.9071
SettlingMax: 1.0948
Overshoot: 9.4780
Undershoot: 0
Peak: 1.0948
PeakTime: 0.7850
The step plot is below.

stepinfo uses 2% unless you set SettlingTimeThreshold. On a figure you can also right-click > properties > options > “show settling time within ___ %”.

A loop over samples in 0.98 to 1.02 is shown next. Walk the definition from the last sample; the stored while-condition is easy to get off-by-one. Prefer stepinfo.
clc; clear all; close all;
num = [0 0 25];
den = [1 6 25];
t = 0:0.005:5;
[y,x,t] = step(num,den,t);
S = 1001;
while y(S)>0.98 & y(S)<1.02;
S=S-1;
end
settling_time = (S-1)*0.005
Output:
settling_time = 1.1886





