Моделирование LQR для двумерной системы не выводит собственные значения и dcgain - PullRequest
0 голосов
/ 27 октября 2018

Я новичок в Matlab и контроллере LQR.Я попытался смоделировать 2-мерную систему, которая была смоделирована с использованием модели пространства состояний, используя следующий код, но она не показывает собственные значения и dcgain для этой системы.Я не уверен, правильно ли я реализовал код или нет.Любая помощь будет оценена.

mc=10;
mr=10;
ml=10;
Jc=1/(12*(mc+mr+ml));
g = 9.8;
Fe=0.1;
d=0.5;
mu=0.02;

A_lat=[0 0 1 0;0 0 0 1;0 -Fe/(mc+mr+ml) -mu/(mc+mr+ml) 0;0 0 0 0];
B_lat=[0;0;0;1/(Jc+mr*d^2+ml*d^2)];
C_lat=[1 0 0 0];
D_lat=0;

A_lon=[0 1;0 0];
B_lon=[0;1/(mc+mr+ml)];
C_lon=[1 0];
D_lon=0;  

sys_lat = ss(A_lat,B_lat,C_lat,D_lat);
sys_lon=ss(A_lon,B_lon,C_lon,D_lon);

Co_lat = ctrb(sys_lat);
Co_lon = ctrb(sys_lon);

constQ=0.1;
constR=1;
Q_lat = Co_lat'*Co_lat;%constQ*eye(4);
R_lat = constR;
Q_lon = Co_lon'*Co_lon;%constQ*eye(2);
R_lon = constR;

K_lat = lqr(sys_lat,Q_lat,R_lat);
K_lon = lqr(sys_lon,Q_lon,R_lon);

sys_K_lat = ss(A_lat-B_lat*K_lat,B_lat,C_lat,D_lat);
sys_K_lon = ss(A_lon-B_lon*K_lon,B_lon,C_lon,D_lon);
sys_K=append(sys_K_lat,10,sys_K_lon);

disp("*******");
eig(A_lat-B_lat*K_lat);
eig(A_lon-B_lon*K_lon);
DCGAIN = dcgain(sys_K);

bode(sys_K);
input = @(t,x) -K_lat*x;

1 Ответ

0 голосов
/ 28 октября 2018

Точка с запятой будет подавлять вывод на дисплей. Просто удалите точку с запятой для кода, решающего собственные значения, и dcgain

disp('*******');
eig(A_lat-B_lat*K_lat)
eig(A_lon-B_lon*K_lon)
DCGAIN = dcgain(sys_K)

Выход:

*******

ans =

  -0.1411 + 0.1411i
  -0.1411 - 0.1411i
  -0.0409 + 0.0409i
  -0.0409 - 0.0409i


ans =

  -0.0236 + 0.0236i
  -0.0236 - 0.0236i


DCGAIN =

   -5.0028         0         0
         0   10.0000         0
         0         0   30.0000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...