I have the following code:
g = tf([0 0 5000],[1 200 5000]);
step(g); grid on;
S = stepinfo(step(g),'RiseTimeLimits',[0 0.632])
the figure producued by step(g) is here:
from looking at this, it is obvious that the rise time to 63.2% of the steady state output is approximately 0.04. However, the stepinfo() command says the rise time is
RiseTime: 74.6661
This number makes no sense at all. Is there something I am missing? I have used stepinfo() before and got accurate results but this has me stumped.

 Réponse acceptée

Star Strider
Star Strider le 9 Déc 2020

0 votes

From the documentation for stepinfo:
  • RiseTime — Time it takes for the response to rise from 10% to 90% of the steady-state response.
If you want the time constant τ use step with this calling syntax:
then interpolate (if necessary) to get the time constant:
g = tf([0 0 5000],[1 200 5000]);
[y,tOut] = step(g);
tau = interp1(y, tOut, exp(-0.5))
producing:
tau =
0.038246779260296
.

4 commentaires

Evan Hine
Evan Hine le 9 Déc 2020
thanks this makes much more sense!
As always, my pleasure!
Note that this works because the system is overdamped (or appears to be, I didn’t do the maths to analyse that in detail). If it had overshoot, it would be necessary to find the time of the (first) peak, and then use only the time and amplitude values up to that point to interpolate the time constant.
Also, a small correction:
tau = interp1(y, tOut, 1-exp(-1))
producing:
tau =
0.040550205799629
.
Paul
Paul le 9 Déc 2020
Modifié(e) : Paul le 9 Déc 2020
Note that this solution assumes that the final value of the response is unity. I think that the time constant is typically taken as 63% to the steady state, whatever that steady state value may be.
Star Strider
Star Strider le 10 Déc 2020
Only in this situation. I do not intend it to generalise to all such situations.
I quote from my Comment:
Note that this works because the system is overdamped (or appears to be, I didn’t do the maths to analyse that in detail). If it had overshoot, it would be necessary to find the time of the (first) peak, and then use only the time and amplitude values up to that point to interpolate the time constant.

Connectez-vous pour commenter.

Plus de réponses (1)

Paul
Paul le 9 Déc 2020

0 votes

The first input to stepinfo is incorrect. It should just be g
>> S = stepinfo(g,'RiseTimeLimits',[0 0.632])
S =
struct with fields:
RiseTime: 4.0539e-02
SettlingTime: 1.3999e-01
SettlingMin: 6.3697e-01
SettlingMax: 9.9839e-01
Overshoot: 0
Undershoot: 0
Peak: 9.9839e-01
PeakTime: 2.2606e-01

Produits

Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by