Step response error when using step

조회 수: 192 (최근 30일)
Justin Sheldon
Justin Sheldon 2021년 9월 6일
답변: Paul 2021년 9월 6일
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)

답변 (2개)

Paul
Paul 2021년 9월 6일
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 2021년 9월 6일
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)

카테고리

Help CenterFile Exchange에서 Stability Analysis에 대해 자세히 알아보기

태그

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by