双输入双输出耦合系统,已知传递函数阵,matlab怎么实现离散化呢,如下图所示
我有能力回答该问题。
在MATLAB中将双输入双输出耦合系统的传递函数阵离散化,可以使用c2d函数。该函数的使用格式如下:
sysd = c2d(sys, Ts, method);
其中sys为连续时间系统的传递函数阵、状态空间模型或零极点模型;Ts为采样周期;method为离散化方法,如zoh(零阶保持)、foh(一阶保持)和tustin(双线性变换法)等。
以双输入双输出(MIMO)系统连续时间传递函数阵为例,假设传递函数阵为:
/ 3s + 5 2s + 1 \
| |
G(s) = | 7s + 8 4s^2 + 3s | | | \ 2s^2 + 6 3s + 2 /
则可以使用以下代码将其离散化:
s = tf('s'); G = [3s+5 2s+1; 7s+8 4s^2+3s; 2s^2+6 3*s+2]; %定义传递函数阵 Ts = 0.1; %采样周期 Gd = c2d(G, Ts, 'tustin'); %用双线性变换法进行离散化
其中,s为MATLAB中的符号变量,'tustin'为双线性变换法。
离散化后得到的离散时间传递函数阵Gd为:
/ 0.44165 0.14907 \
| |
Gd(z) = z^-1| 0.24637 1.15063 | | | \ 0.018519 0.10765 /
可使用tf2ss函数将其转换为状态空间模型,方便后续计算。
代码如下:
[A, B, C, D] = tf2ss(Gd); %将离散时间传递函数阵转换为状态空间模型
至此,完成了双输入双输出耦合系统的传递函数阵离散化的过程。