www.gusucode.com > 倒立摆全状态观测器设计,在Matlab_Simulink仿真环境中实现仿真 > DanJiDaoLiBaiGuanCeQiDesign/Initial_File.m

    clc
clear
% 状态观测器控制系统
% 检验状态反馈输出与设计的状态观测器输出的差别,以决定状态观测器设计是否合理

% 状态x=[theta theta' x x']
% 即分别为偏角、偏角的导数、位移、位移的导数
% 控制输入u为水平方向推力
% 系统仿真时,设定控制输入u=0,初始状态x=[-10/57.3 0 0.2 0]
% 初始偏角10度,初始位移0.2m,察看仿真效果

% 仿真结果分别查看原状态、观测器状态、以及二者之差,以检验观测器设计效果。
A=[0 1 0 0
   15.7756 0 0 0
   0 0 0 1
   -0.7171 0 0 0];
B=[0 -1.4634 0 0.9756]';
C=eye(4);
% C=[0 0 1 0];

% 检验系统的可控性,满秩即完全可控
n=rank(ctrb(A,B));

% 检验状态的可观测性,以确定能否设计全状态观测器 
m=rank(obsv(A,C));

% 全状态反馈后期望的特征值
clp=[-1 -2 -1+1*i -1-1*i];

% 求出状态反馈矩阵
K=place(A,B,clp);

% 状态观测器期望的极点为
op=[-2 -3 -2-i -2+i];
% 求出全维状态观测器反馈系数 H
H=place(A',C',op)'

% 状态的初值 
x0=[-10/57.3 0 0.2 0]';