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-.');