加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab 求取系统时域响应性能指标

(2012-10-30 19:05:33)
标签:

超调量

峰值时间

上升时间

时域

信号分析

分类: 信号处理

 

1.求解方法介绍

%时域响应性能指标求取

%峰值时间 timetopeak
[Y,k] = max(y);                      %求出y的峰值及相应的时间
timetopeak = t(k);                   %获得峰值时间

%超调量 percentovershoot
C = dcgain(G);                       %求取系统的终值
[Y,k] = max(y);                      %求取y的峰值及相应时间
percentovershoot = 100 * (Y-C)/C;    %计算超调量

%上升时间 risetime
%当y = C时,对出循环,此为上升时间
C = dcgain(G);                       %求取系统终值
n = 1;
while y(n) < C
    n = n + 1;
end
risetime = t(n);

%对于输出无超调量的系统,上升时间定义为输出从稳态值的10%上升到90%所需时间
C = dcgain(G);
n = 1;
while y(n) < 0.1*C
    n = n+1;
end
m = 1;
while y(n) < 0.9*C
    m = m+1;
end
risetime = t(m) - t(n);

%调节时间 settlingtime
C = dcgain(G);
i = length(t);
while (y(i) > 0.98*C) & (y(i) < 1.02*C)
    i = i-1;
end
settlingtime = t(i);

2.具体实例:求解下面系统的性能参数

方法一:编程直接求解

G = zpk([],[-1+3*i,-1-3*i],3);
%计算最大峰值时间和它对应的超调量
C = dcgain(G)
[y,t] = step(G);
plot(t,y);
grid on;

[Y,k] = max(y);
timetopeak = t(k);
percentovershoot = 100*(Y-C)/C

%计算上升时间
n = 1;
while y(n) < C
    n = n+1;
end
risetime = t(n)

%计算稳态响应时间
i = length(t);
while(y(i)>0.98*C)&(y(i)<1.02*C)
    i = i-1;
end
settlingtime = t(i)

运行结果:

C =

    0.3000

percentovershoot =

   35.0913

risetime =

    0.6820

settlingtime =

    3.5147

http://s5/middle/84024a4a4cd44c3a7a944&amp;690

方法二:在精度要求不高时,可以采用鼠标点击的方法求解

G = zpk([],[-1+3*i,-1-3*i],3);
step(G);

之后在相应点单击即可

http://s13/middle/84024a4a4cd44c3ce7d9c&amp;690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有