Filter löschen
Filter löschen

Step response error when using step

38 Ansichten (letzte 30 Tage)
Justin Sheldon
Justin Sheldon am 6 Sep. 2021
Beantwortet: Paul am 6 Sep. 2021
s=tf('s')
s=((-1.0024*(s+55.86)*(s+0.4987))/(s))
%pzmap(s)
zpk(s)
step(s)
I am recieving the error when trying to use the step function.
Error using DynamicSystem/step (line 95)
Cannot simulate the time response of improper (non-causal) models.
Error in test (line 12)
step(s)

Antworten (2)

Paul
Paul am 6 Sep. 2021
An improper transfer function has a numerator with higher order than the denominator. In your case, the numerator is second order and the denominator is first order.
If you want to approximate the step response, you can augment the transfer function with an additional high frequency pole so that the numerator and denominator are both second order:
s = tf('s');
sys = ((-1.0024*(s+55.86)*(s+0.4987))/(s));
aporoximatesys = sys*tf(1,[.0001 1]);
Now you can plot the step response of approximatesys (make sure you pick a reasonably large final time), but it's only an approximation.
If you want the exact solution, you'll need to work it out by hand or use the Symbolic Math Toolbox. But the solution will be difficult to plot exactly.

Chunru
Chunru am 6 Sep. 2021
Make the system casual (output does not depend on future input) before using step:
s=tf('s');
sys=((-1.0024*(s+55.86)*(s+0.4987))/(s^2)) % this is a casual system
sys = -1.002 s^2 - 56.49 s - 27.92 ---------------------------- s^2 Continuous-time transfer function.
%pzmap(s)
zpk(sys)
ans = -1.0024 (s+55.86) (s+0.4987) ---------------------------- s^2 Continuous-time zero/pole/gain model.
step(sys)

Kategorien

Mehr zu Stability Analysis finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by