用MATLAB把一个三阶纯滞后传递函数转化为没有零点的二阶纯滞后传递函数模型
时间: 2024-01-01 19:04:44 浏览: 144
纯滞后传递函数的一般形式为:
$$
G(s) = \frac{K}{(1+T_1s)(1+T_2s)(1+T_3s)}
$$
其中,$K$ 为传递函数的增益,$T_1$、$T_2$、$T_3$ 为时间常数。
要将这个三阶纯滞后传递函数转化为没有零点的二阶纯滞后传递函数模型,可以使用双线性变换方法。具体步骤如下:
1. 首先,将三阶纯滞后传递函数模型转换为离散时间系统模型。可以使用 MATLAB 中的 `c2d` 函数进行转换。假设采样时间为 $T_s$,转换代码如下:
```matlab
K = 1;
T1 = 2;
T2 = 3;
T3 = 4;
sys = tf(K, [T1*T2*T3, T1*T2+T1*T3+T2*T3, T1+T2+T3, 1]);
sysd = c2d(sys, Ts);
```
2. 使用双线性变换将离散时间系统模型转换为连续时间系统模型。假设 $z$ 是离散时间系统的复平面上的单位圆,$s$ 是连续时间系统的复平面上的变量,双线性变换公式为:
$$
s = \frac{2}{T_s}\frac{1-z^{-1}}{1+z^{-1}}
$$
具体代码如下:
```matlab
[z,p,k] = tf2zp(sysd.num{1},sysd.den{1});
sd = 2/Ts*(1-z^-1)./(1+z^-1);
[num,den] = zp2tf(z,p,k);
sysc = tf(num,den)*Ts/2;
```
这里使用了 `tf2zp` 和 `zp2tf` 函数将离散时间系统的零点和极点转换为连续时间系统的零点和极点,然后使用了双线性变换公式将连续时间系统转换为离散时间系统。
3. 将转换后的连续时间系统模型化简为二阶纯滞后传递函数模型。具体代码如下:
```matlab
[num,den] = tfdata(sysc);
K = num{1}(end)/den{1}(end);
T1 = 2/(den{1}(2)+sqrt(den{1}(2)^2-4*den{1}(1)*den{1}(3)));
T2 = 2/(den{1}(2)-sqrt(den{1}(2)^2-4*den{1}(1)*den{1}(3)));
sys2 = tf(K, [T1*T2, T1+T2, 1]);
```
这里使用了 `tfdata` 函数将连续时间系统的传递函数转换为分子和分母的形式,然后根据二阶纯滞后传递函数的一般形式重新构造传递函数模型。
最终,`sys2` 就是没有零点的二阶纯滞后传递函数模型。
阅读全文