多输入-多输出的连续系统状态空间表达式的向量矩阵形式表示为
其中A为系统矩阵,B为输入矩阵,C为输出矩阵,D为直接传递矩阵 。在MATLAB中,为了求状态方程的阶跃响应,可以先用ss命令来建立状态空间模型,然后利用step命令得到系统的阶跃响应。
对于连续系统,可以利用sys=ss(A,B,C,D)来得到状态空间模型,其中A、B、C、D为描述线性连续系统的矩阵。如果sys1表示的是一个连续系统的传递函数,可以利用sys=ss(sys1)将传递函数转化为状态方程。
对于离散系统,可以利用sys=ss(G,H,C,d,T)来得到离散系统的状态空间模型,其中G、H、C、d、T为描述线性离散系统的矩阵,T为采样时间。或者可以利用sysd=c2d(sysc,T,method)来将连续时间的系统模型转换为离散时间的系统模型,其中sysc表示连续时间的系统模型,method表示离散化采用的方法,默认采用零阶保持器。
在MATLAB中,求状态方程的阶跃响应,可以直接利用命令step(sys)直接得到系统的阶跃响应。
例1:线性连续系统的状态方程为
其中,
求上述系统的单位阶跃响应。
求解程序如下:
close all;
clear all;
A=[0 1 0;
0 0 1;
-6 -11 -6];
B=[1 0;2 -1;0 2];
C=[1 -1 0;2 1 -1];
D=[0 0;0 0];
sys=ss(A,B,C,D);%得到系统状态方程模型
step(sys)%求系统的阶跃响应
运行结果如下:
例2:如果将上述系统采用零阶保持器将其离散化,采样周期为0.1s,求离散化的状态方程模型,及其在零初始化条件下,该离散化系统的阶跃信号响应。
求解程序如下:
clear all;
close all;
A=[0 1 0;
0 0 1;
-6 -11 -6];
B=[1 0;2 -1;0 2];
C=[1 -1 0;2 1 -1];
D=[0 0;0 0];
T=0.1;
sys=ss(A,B,C,D);%得到连续系统的状态空间模型
sysd=c2d(sys,T)%将连续系统转化为离散系统的状态空间模型,离散化方法默认采用零阶保持器
step(sysd)%得到离散系统的阶跃响应
运行结果如下:
sysd =
A =
x1 x2 x3
x1 0.9991 0.0984 0.004097
x2 -0.02458 0.9541 0.07382
x3 -0.4429 -0.8366 0.5112
B =
u1 u2
x1 0.1099 -0.004672
x2 0.1959 -0.0902
x3 -0.1164 0.1936
C =
x1 x2 x3
y1 1 -1 0
y2 2 1 -1
D =
u1 u2
y1 0 0
y2 0 0
Sample time: 0.1 seconds
Discrete-time state-space model.