Can I calculate the settling time in MATLAB?

138 visualizzazioni (ultimi 30 giorni)
Ali Almakhmari
Ali Almakhmari il 16 Ott 2023
Risposto: Star Strider il 16 Ott 2023
I have many closed loop transfer functions that are in similar form to this one:
I want to calculate the settling time up until 2% of the final value. I have many of those transfer functions so hopefully whatever method you guys suggest I can use it to automate this process for all.

Risposte (1)

Star Strider
Star Strider il 16 Ott 2023
Perhaps this —
s = tf('s');
G = (7507.852*s^3 - 37030.228*s^2 - 70479.368*s + 100001.744) / (s^5 + 50*s^4 + 1000*s^3 + 10000.585*s^2 + 9997.664*s + 10001.744);
figure
stepplot(G)
grid
s = stepinfo(G)
s = struct with fields:
RiseTime: 2.3370 TransientTime: 8.1185 SettlingTime: 8.4958 SettlingMin: 9.0200 SettlingMax: 12.8592 Overshoot: 28.6117 Undershoot: 59.0919 Peak: 12.8592 PeakTime: 3.6890
Settling_Time = s.SettlingTime
Settling_Time = 8.4958
From the documentation:
By default, SettlingTime measures the time it takes for the error to stay below 2% of |yfinalyinit|.
That would appear to meet your requirement for it.
.

Categorie

Scopri di più su Entering Commands in Help Center e File Exchange

Prodotti


Release

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by