您的位置:首页 > 编程语言 > MATLAB

matlab 控制(helpqq)

2014-04-06 19:28 183 查看
这是个求超调量和调节时间的比较简单的程序,但是结果和别人运行出来的结果不一样,有点纠结。不过我觉得我的方法应该是正确的,贴一下代码吧!
i=1;
ts=zeros(1,100);
m=zeros(1,100);
ka=zeros(1,100);
aa=zeros(1,100);
for k=0.5:0.5:10
for a=0.05:0.05:2
num=[k,2*a*k,a^2*k];
den=[1,k,2*a*k,a^2*k];
G=tf(num,den);
[y,t]=step(G);                                      %得到系统的单位阶跃响应
C=dcgain(G);                                        %得到系统终值

max_y=max(y);
max_overshoot=100*(max_y-C)/C;                      %超调量计算
s=length(t);                                        %调整时间计算
while y(s)>0.98*C&&y(s)<1.02*C                      %达到误差要求的允许值
s=s-1;
end
settling_time=t(s);                                 %得到系统的调节时间

if settling_time<3 && max_overshoot <8
ka(i)=k;
aa(i)=a;
ts(i)=settling_time;
m(i) =max_overshoot;
i=i+1;
end
end
end
table=[ka' aa' m' ts'];
table(1:i-1,:);
在这个里面用到了矩阵的表示,其实已经忘记了很多了,今天当做是又复习了一下吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: