⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zuiyou1.m

📁 matlab最优控制的作业 请各位高手多多指教
💻 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 + -