gusucode.com > MATLAB仿真技术与应用__的配套例题和习题的matlab源代码 > 第七章/example13.m

    %MATLAB program 7-13
%Design a controller for inverted pendulum
clear all;
clc;
A=[0 0 1 0;0 0 0 1;0 -0.644 -4.26 0;0 17.29 7.058 -0.145];    %输入状态空间模型矩阵
B=[0;0;84.27;-139.5];
C=[1 0 0 0;0 1 0 0]; D=0;
%Computing the poles of open-loop system
E=eig(A)
%计算能控性矩阵的秩
CO=ctrb(A,B);
N_C=rank(CO)
%计算能观性矩阵的秩
OB=obsv(A,C);
N_O=rank(OB);
%计算状态反馈矩阵
q=[1,0.001,0.1,0.1];
Q=diag(q);
R=50.0;
[K p e]=lqr(A,B,Q,R);
t=0:0.02:5;                                            %仿真时间
U=ones(size(t));                                        %仿真的输入信号
[y,t]=lsim(A-B*K,B,C,D,U,t);                             %运行仿真
t=0:0.02:5;
y1=y(:,1);                                              %输出
y2=y(:,2);
plot(t,y1);
grid;
hold on;
plot(t,y2,'b-.');