www.gusucode.com > matlab编程PSO算法优化求解PID参数源码程序 > gusucode/code/ste.m

    function [errs,sigma,tp,ts]=ste(y,t)
[mp,tf]=max(y);
cs=length(t);
yss=y(cs);
errs=trapz(t,abs(y-yss).*t);
sigma=(mp-yss)/yss;   %计算超调量
tp=t(tf);     %计算峰值时间  
%tp=tf     %计算峰值时间  

%计算调节时间
i=cs+1;
n=0;
while n==0
    i=i-1;
    if i==1
        n=1;
    elseif y(i)>1.05*yss,
        n=1;
    end;
end
t1=t(i);
cs=length(t);j=cs+1;
n=0;
while n==0
    j=j-1;
    if j==1
        n=1;
    elseif y(j)<0.95*yss,     %选择5%的误差带
        n=1;
    end;
end;
t2=t(j);
if t1==0
    ts=t2;
else
    if t2<tp
        if t1>t2
            ts=t1;
        end
    else
        if t2<t1
            ts=t2;
        else
            ts=t1;
        end
    end
end