📄 zuiyou1.m
字号:
clear all;
A=[-0.3 0.1 -0.05;1 0.1 0;-1.5 -8.9 -0.05];
B=[2;0;4];
C=[1 2 3];
D=zeros(1);
Q1=eye(3,3);
Q2=1;
N=zeros(1);
x0=[1 1 1];
%计算K值,并求零输入输入状态下的输出与状态
[K,S,E]=lqr(A,B,Q1,Q2,N);
sys=ss(A-B*K,B,C,D);
[y,T,xt]=initial(sys,x0);
n=length(T);
for j=1:n
u(j,:)=-K(1,:)*(xt(j,:))';
end
%画曲线
figure(1)
subplot(211),
plot(T,u)
title('零输入下最优控制U')
xlabel('time-sec')
ylabel('value');
grid on;
subplot(212),
plot(T,xt)
title('零输入下最优状态轨线')
xlabel('time-sec')
ylabel('value');
grid on;
figure(2)
initial(sys,x0)
title('零输入下的输出曲线')
xlabel('timg/s')
ylabel('value')
grid;
[y1,T1,xt1]=step(sys);
m=length(T1);
for j=1:m
u1(j,:)=-K(1,:)*(xt1(j,:))';
end
figure(3)
subplot(211),
plot(T1,xt1)
title('阶跃输入下的最优状态曲线')
xlabel('time-sec')
ylabel('value');
grid on;
subplot(212),
step(A-B*K,B,C,D,1,T1)
title('阶跃输入下的输出曲线')
xlabel('timg/s')
ylabel('value')
grid;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -