Matlab为给定的建立时间和过冲创建传递函数

时间:2018-02-18 14:55:31

标签: matlab transfer-function

我想找到具有非最小相位零z = 36.6的二阶传递函数,其具有2%的过冲和2%的0.2s的建立时间。我创建了一个可调参数传递函数,但我不知道如何找到可调参数w和xi的值,它们允许我想要的性能。

有自动方式找到它们吗?我尝试对变量进行采样,然后选择最佳函数,但我认为这不是最好的方法。

w = realp('w',25);
xi = realp('xi',0.8);
z = 36.6; 
G = tf(w^2*[-1/z 1],[1 2*xi*w w^2]); 

2 个答案:

答案 0 :(得分:0)

w = realp('w',25);
xi = realp('xi',0.8);
z = 36.6; 
G = tf(w^2*[-1/z 1],[1 2*xi*w w^2]);

step(G);
val = stepinfo(G);
ts=val.SettlingTime;
Os=val.Overshoot;

希望这有效......虽然步骤响应有点奇怪。

我觉得这是一个类似的二阶系统,因此您可以直接从wzi进行计算。

答案 1 :(得分:0)

过冲由sigma = exp(-pi * zeta / sqrt(1-zeta ^ 2))给出,因此,对于[0,1]中给定的过冲sigma,阻尼因子变为zeta = -log( sigma)/ sqrt(pi ^ 2 +(log(sigma))^ 2)。

由于ts = 4 /(zeta * wn),建立时间约为

一个例子:

ts = 0.5;
sigma = 0.2;

zeta = -log(sigma)/sqrt(pi^2+(log(sigma))^2);
wn = 4/zeta/ts;

K = 1;

H = tf(K*wn^2,[1,2*zeta*wn,wn^2])

val = stepinfo(H)
ts_meas = val.SettlingTime
Os = val.Overshoot