目标
目前,我正在尝试使用 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 中的图像不同我的不确定模型(当通过波特图时)仅显示前导对角线上的响应。请参阅屏幕截图了解我的意思:
其中蓝色是个体模型,红色是不确定模型
问题
如何创建基于一系列 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/