【问题标题】:Error in sysic function in MATLAB for defining control system blocksMATLAB 中用于定义控制系统块的 sysic 函数出错
【发布时间】:2019-05-05 06:07:15
【问题描述】:

我想合成一个 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);

但是代码面临这个错误:Error using sysic (line 175) OUTPUTVAR 的“+u1-G”部分的信号数量不一致

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

【问题讨论】:

    标签: matlab controls simulink visualize


    【解决方案1】:

    如果 G 是 2x2,那么 u1 必须是 2x1,u1-G 才有意义。但这被输入w_1,它只有 1x1。因此存在维度问题,sysic 正在显示这一点。如何解决这个问题取决于您实际尝试创建的框图。

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

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

    【讨论】:

    • 谢谢,如果u1是2x1可以,可以减去2*2的G吗?两个减法矩阵不应该在同一维度?
    • 符号表示 G 的输出从u1 中减去。鉴于G 的输出实际上是G*u2,那么您需要u1 的维度与G*u2 的维度相同(而不是G 本身。)根据您的数据,u1u2 都需要大小为 2x1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多