二维系统的LQR建模不打印特征值和dcgain



我是Matlab和LQR控制器的新手。我试图模拟一个二维系统,该系统是使用状态空间模型建模的,使用以下代码,但它没有显示该系统的特征值和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;

分号将禁止显示输出。只需删除代码求解特征值的分号和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

相关内容

  • 没有找到相关文章

最新更新