MATLAB中用于定义控制系统块的sysic函数错误

时间:2019-05-05 06:07:15

标签: matlab controls simulink visualize

我想合成一个H_infinity控制系统,并想以诸如this form之类的常规控制配置的形式对其进行定义。 首先,我定义了块之间的关系:

s=tf('s');
w_1=makeweight(100,10,0.5);  % Weight for performance
w2_2=eye(2);                 % Weight for avoiding over qualify
w3=0;

G=[(0.806*s+0.264)/(s^2+1.15*s+0.202) - 
(15*s+1.42)/(s^3+12.8*s^2+13.6*s+2.36); 
(1.95*s^2+2.12*s+0.49)/(s^3+9.15*s^2+9.39*s+1.62) 
(7.14*s^2+25.8*s+9.35)/(s^4+20.8*s^3+116.4*s^2+111.6*s+18.8)]; %  a 2*2 Plant



systemnames='G w_1 w2_2 w3';
inputvar='[u1;u2]';
outputvar='[w_1;w2_2;w3;u1-G]';
input_to_G='[u2]';
input_to_w_1='[u1-G]';
input_to_w2_2='[u2]';
sysoutname='P';
sysic;

创建 P 后,以下功能将用于综合控制系统:

 [k1,cl1,Gam1,Info1]=hinfsyn(P,1,1);

但是代码遇到以下错误: 使用sysic时出错(第175行) 的“ + u1-G”部分中的信号数量不一致。

如何解决错误?是否有标准方法以控制系统框图的形式显示代码中定义的块?

1 个答案:

答案 0 :(得分:1)

如果G为2x2,则u1必须为2x1,以使u1-G有意义。但这被馈送到w_1中,后者仅为1x1。因此,存在尺寸问题,sysic显示了这一问题。该如何解决将取决于您实际尝试创建的框图。

也不清楚为什么要使用W3,因为您没有将W3连接到任何东西。

没有用于创建单个组件可视化的工具,以显示它们如何连接。您可以使用Simulink自己创建模型,其中每个组件都可以使用LTI System块来表示,有关示例,请参见Import LTI Model Objects into Simulink