2016-05-18 29 views
0

Ich möchte einfache LQR für MIMO-System in Matlab (m-Datei) anwenden, ich habe einige Ergebnisse, aber ich bin mir nicht sicher, ob es sinnvoll ist oder nicht, könnte jemand meinen Code unten brüllen, und geben Sie mir irgendwelche Kommentare.Wie implementiert man LQR für MIMO-System in Matlab?

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

Antwort

1

Es sieht gut aus für mich. Ich nehme jedoch an, dass Sie eine asymptotische Verfolgung Ihrer Schritteingaben wünschen. In diesem Fall müssen Sie Ihr Referenzsignal entsprechend den DC-Verstärkungen des Systems richtig skalieren und/oder Sie müssen eine integrale Aktion einführen. Dies ist bereits in MATLAB verfügbar - versuchen Sie help lqi