matlab 增益调度H ∞控制

kxe2p93d  于 2023-11-21  发布在  Matlab
关注(0)|答案(1)|浏览(236)

我正在使用鲁棒控制器中的内置函数hinfgs进行增益调度H ∞控制设计。
当我为hinfgs函数提供多面体模型时,我得到以下错误:
使用hinfgs时出错(第46行)
当E矩阵变化时不可用。
即使对于非常简单的参数相关系统,如质量Spring系统,它也不起作用。
MATLAB代码如下:

c = 5;
k = 300;
m = [2 8];
Ws=tf([10],[1 10]);
Wk=tf([5],[1 5]);
for i = 1:length(m)
    GP_pollist=[];
    A = [0 1; -k/m(i), -c/m(i)];
    B = [0; -1/m(i)];
    C = [1 0];
    sys(i)= ss(A,B,C,0);
    [ap,bp,cp,dp]=linmod('G_P_mass_spring');
    GP_all_lti{i}=ltisys(ap,bp,cp,dp);
    GP_all{i}=[ap bp;cp dp];
    GP_all_ss{i}=ss(ap,bp,cp,dp);
    GP_pollist=[GP_pollist,GP_all_lti{i}];
end
GP_pol=psys(GP_pollist);
r=[1 1];
[gopt,K_all_hinf,R,S] = hinfgs(GP_pol,r,0,1e-2,1e-2);

字符串
如果有人能在这里帮助我,我将不胜感激。

mxg2im7a

mxg2im7a1#

除非你的 *E矩阵 *(通常只是单位元),例如,

Ex' = A(p)x + Bu

字符串
实际上随参数p而变化,您已经在提供给hinfgs的系统矩阵列表中将其明确设置为零(对于除第一个系统之外的所有系统)。

% first system
g_one = ltisys(a0,b0,c0,d0); 
% ...
% p-th system
g_p = = ltisys(ap,bp,cp,dp,0*ap); % with that, we set E=0*A=0 here
% ...
GP_pollist = [g_one, g_p]

相关问题