matlab - 基于一系列多输入多输出模型 (MIMO) 创建不确定模型

标签 matlab control-theory

目标

目前,我正在尝试使用 ucover 创建一个基于一系列状态空间模型的不确定系统。为此,我的脚本基于文档 "Modeling a Family of Responses as an Uncertain System"它明确地展示了创建基于单输入单输出系统 (SISO) 的不确定系统的技术,但也清楚地表明这也完全可用于 MIMO 系统。

技术细节

具体来说,ucover的文档中声明它支持MIMO系统:

USYS = ucover(PARRAY,PNOM,ORD1,ORD2,UTYPE) returns an uncertain 
  system USYS with nominal value PNOM and whose range of behaviors 
  includes all LTI responses in the LTI array PARRAY. PNOM and PARRAY 
  can be SS, TF, ZPK, or FRD models. USYS is of class UFRD if PNOM
  is an FRD model and of class USS otherwise.

ORD1 and ORD2 specify the order (number of states) of each diagonal  
  entry of W1 and W2. If PNOM has NU inputs and NY outputs, ORD1 and ORD2
  should be vectors of length:  

UTYPE           ORD1          ORD2  
InputMult       NU-by-1       NU-by-1  
OutputMult      NY-by-1       NY-by-1  
Additive        NY-by-1       NU-by-1  

在我的例子中,我同时使用 2 个输入和 2 个输出,因此 ORD1 和 ORD2 都应该是 2 × 1。我使用 8 作为 W1 和 W2 使用的状态数(只是因为,我会尝试调整一次)此问题已解决)。

尝试

基于 SISO 示例,我尝试创建一个 MIMO 示例,如下所示

noInputs=2;
noOutputs=2;
noOfStates=4;

Anom=rand(noOfStates,noOfStates);
Bnom=rand(noOfStates,noInputs);
Cnom=rand(noOutputs,noOfStates);
Dnom=rand(noOutputs,noInputs);
Pnom=ss(Anom, Bnom, Cnom, Dnom);


p1 = Pnom*tf(1,[.06 1]);              % extra lag
p2 = Pnom*tf([-.02 1],[.02 1]);       % time delay
p3 = Pnom*tf(50^2,[1 2*.1*50 50^2]);

Parray = stack(1,p1,p2,p3);
Parrayg = frd(Parray,logspace(-1,3,60));
[P,Info] = ucover(Parrayg,Pnom,[8 8]',[8 8]','InputMult');
Wt = Info.W1;
bodemag((Pnom-Parray)/Pnom,'b--',Wt,'r'); grid
title('Relative Gaps vs. Magnitude of Wt')

问题

documentation 中的图像不同我的不确定模型(当通过波特图时)仅显示前导对角线上的响应。请参阅屏幕截图了解我的意思:

enter image description here

其中蓝色是个体模型,红色是不确定模型

问题

如何创建基于一系列 MIMO 状态空间模型的不确定系统,以正确覆盖所有输入和输出之间的响应?

最佳答案

如果您使用[8,8]'作为不确定性顺序结构ord1,ord2,matlab将尝试在您的不确定性 block 中各有两个对角 block 。

然而,matlab 仅支持对角加权函数(由于非凸搜索的一些复杂性),并且您正在绘制的是对角加权,它将乘以 2x2 全 block LTI 动态不确定性。 W1 影响不确定性的行,W2 影响不确定性的列。

因此,您应该检查不确定性乘以权重的样本,然后检查工厂。然后您可以将其与不确定模型堆栈进行比较。请注意,您的非对角线条目实际上为零(<1e-10),因此几乎是解耦的。但是 W1、W2 搜索寻找的是 H 无穷范数,因此您无法在波特图的每个 block 上看到完美的覆盖。它组合了所需最小不确定性量的行/列(请参阅帮助文件中的示例)。这就是为什么您会在演示中看到每个权重 1 个图。

如果您想分别对影响每个 block 的每个不确定性进行建模,那么您需要形成一个新的增强 LFT,使得不确定性是对角线上的四个 1x1(标量)LTI 动态不确定性,那么您可以在 ord1 中拥有四个条目,并且序2。

关于matlab - 基于一系列多输入多输出模型 (MIMO) 创建不确定模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23112466/

相关文章:

将电路转换为 C

machine-learning - 在强化学习中,最优策略和分段最优策略有什么区别?

matlab - 基于多输入多输出模型(MIMO)系列创建不确定模型

haskell - 设计混合系统离散侧的功能方法

image - 在 MATLAB 中使用原始名称保存

matlab - 在 MATLAB 中使用第一维索引及其相应的第二维索引列表对 3D 矩阵进行切片?

matlab - 使用不规则的 x、y 和 z 值进行 3D 插值

c++ - 使用 Matlab 引擎的多线程 C++ 应用程序

matlab - Matlab中的离散概率分布计算