matlab已知系统的传递函数为 ,求其阶跃响应

传递函数为1/(s^2+2as+1),并分析a变化时,其阶跃响应的变化情况。... 传递函数为1/(s^2+2as+1),并分析a变化时,其阶跃响应的变化情况。 展开
 我来答
wenbo13579
2010-07-09 · 超过11用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:27.9万
展开全部
也不晓得我写的是不是你所需要的答案!
只需要给定a的范围!
调用myfun函数即可得到阶跃响应的其中三个指标
如果是你需要的答案,请采纳!
谢!
还有问题请留言!

function [cmax,tp,ts]=myfun(a)
%概略计算某参数变化时阶跃响应的峰值、峰值时间、调节时间
%定义数组a,如a=1:0.1:5;
n=length(a);
for i=1:n
%建立传递函数
num=[1];den=[1 2*a(i) 1];
sys0=tf(num,den);
[y0,t0]=step(sys0);
%计算峰值cmax、峰值时间tp
cmax(i)=max(y0);
tp(i)=spline(y0,t0,cmax(i));
%计算调节时间ts,5%,如果需要计算2%只需将0.05换成0.02即可
for k=1:length(y0)
if abs(y0(k:length(y0))-1)<0.05
ts(i)=spline(y0,t0,y0(k));
end
end
end
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
探索车界
2020-01-20 · TA获得超过3821个赞
知道大有可为答主
回答量:3077
采纳率:28%
帮助的人:205万
展开全部
对于正常的系统传函,求阶跃响应很简单,一般可以用类似下面的代码:
s=tf('s');
gc=2*(0.2*s+1)*(0.1*s+1)/(0.2*s);
step(gc)但上述代码会出错:
??? error using ==> lti.step at 86
cannot simulate the time response of lti models with more zeros than poles.这是因为,传递函数分子阶次高于分母阶次,从物理概念上说违反了因果律,而从数字仿真的角度来说,也是算法不允许的。

可以变通一下,借助于符号运算来求:
syms s
gc=2*(0.2*s+1)*(0.1*s+1)/(0.2*s);
g=ilaplace(gc/s)
ezplot(g,[0 10])得到阶跃响应图形如下(由于传函包含积分环节,其阶跃响应必然是随时间一直增长的,没有稳态值):
应该指出,在上述阶跃响应的表达式中,包括了一个脉冲函数项(dirac),而脉冲函数绘图时是体现不出来的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式