Step response error when using step
38 次查看(过去 30 天)
显示 更早的评论
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)
0 个评论
回答(2 个)
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.
0 个评论
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
%pzmap(s)
zpk(sys)
step(sys)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Stability Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!