zuiyou1.m

来自「matlab最优控制的作业 请各位高手多多指教」· M 代码 · 共 55 行

M
55
字号
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 + =
减小字号Ctrl + -
显示快捷键?