基于状态空间的建模过程

我们得到的矩阵

A = [0 1 0 0;

  30.0503 0 0 2.9156;

  0 0 0 1;

  -0.5117 0 0 -1.0015]

B = [0;

  -2.4614;

  0;

  0.8455]

C = [1 0 0 0;

  0 0 1 0]

D =1

用matlab代码建模,也可用simulink:

clear all                                       #清理之前的空间

A = [0 1 0 0;                               #输入各矩阵

  30.0503 0 0 2.9156;

  0 0 0 1;

  -0.5117 0 0 -1.0015]

B = [0;

  -2.4614;

  0;

  0.8455]

C = [1 0 0 0;

  0 0 1 0]

D =1

sys = ss(A,B,C,D);                                #将ABCD空间化

sys1 = c2d(sys,0.1)                             #将sys离散化,采样时间0.1s

x = [0;

  0;

  0;

  0];                                                #初始状态假设为0

u = 0.001;                                           #初始控制量(这个随意,只是为了验证)

for  i = 1:100                                      #观察10s内的变化,采样为0.1s,需要采样100次

  x(:,i+1) = sys1(1,1).A * x(:,i) + sys1(1,1).B * u;              #经典的方程,乘法注意矩阵维度

end

#可以查看变量x的100次变化,简单的离散化模型就建立完成了,以上仅仅是模型,为了更好的结果还需要有控制器等,这里不详细说明

体会:问题模型已经通过矩阵(ABCD)显示出来了,里面的公式等等就相当于是个箱子,我们通过输入矩阵,得到的结果也仅仅是矩阵

猜你喜欢

转载自www.cnblogs.com/niulang/p/9036596.html