如何在matlab中实现MIMO系统的LQR?

时间:2016-05-18 14:17:51

标签: matlab optimization mathematical-optimization linear

我想在Matlab(m文件)中应用简单的LQR for MIMO系统,我得到了一些结果,但是,我不确定,是否有意义,任何人都可以查看我的代码,并给我任何评论。

clear all; close all; clc;
% State-Space model
A = [0 0 1 0 0 0 0; 0 0 0 1 0 0 0; -4.34 0 -0.0882 0 1.24 0 0; 0 0 0 -5 1.4823 3.6 18.75; 0 0 0 0 -.8333 0 0; 0 0 0 0 0 -1 0; 0 0 0 0 -0.0169 0 -0.5];
B = [0 0; 0 0; 0 0; 0 0; 1 0; 0 1; 0 0];
C = [1 0 0 0 0 0 0; 0 1 0 0 0 0 0];
D = zeros(2);
states = {'\psi' '\psi_dot' '\phi' '\phi_dot' '\tau_1' '\tau_2' 'M_R'};
inputs = {'u_1' 'u_2'};
outputs = {'\psi'; '\phi'};
%% LQR
Q = 0.2*diag([1, 1, 1, 1, 1, 1, 1]);
R =  diag([1, 1]);
K = lqr(A, B, Q, R);
Ac = (A-B*K);
sys_cl = ss(Ac,B,C,D,'statename',states,'inputname',inputs,'outputname',outputs);
t  = 0:0.01:25;
u1 = 0.5*ones(size(t));
u2 = 0.2*ones(size(t));
u  = [u1; u2];
[y,t,x] = lsim(sys_cl,u,t);
figure
lsim(sys_cl,u,t);
grid on
figure
step(sys_cl);

1 个答案:

答案 0 :(得分:1)

对我来说很好看。但是,我假设您希望逐步跟踪您的步进输入,在这种情况下,您需要根据系统的DC增益正确地缩放参考信号,和/或您需要引入积分作用。这已在MATLAB中提供 - 尝试help lqi