首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于一族多输入多输出模型(MIMO)创建不确定模型

基于一族多输入多输出模型(MIMO)创建不确定模型
EN

Stack Overflow用户
提问于 2014-04-16 22:31:53
回答 3查看 646关注 0票数 3

目标

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

技术细节

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

代码语言:javascript
复制
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示例,如下所示

代码语言:javascript
复制
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中的图像不同,我的不确定模型(当通过bode图时)仅在前导对角线上显示响应。请看截图来理解我的意思:

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

问题

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

EN

回答 3

Stack Overflow用户

发布于 2015-05-29 03:36:52

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

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

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

如果您想要分别对影响每个块的每个不确定性进行建模,那么您需要形成一个新的增广线性傅立叶变换,使得不确定性是对角线上的四个1x1(标量) LTI动态不确定性,那么您可以在ord1和ord2中有四个条目。

票数 0
EN

Stack Overflow用户

发布于 2016-05-20 13:41:19

由于这是一个MIMO系统,您不应该逐个元素地比较。您使用的是输入乘法形式,因此要创建的不确定系统的形式为

Pnom*(I + W1*Delta*W2)是任何稳定的(在本例中为2 x 2)系统,|| Delta || <=为1。因此,要验证产生的不确定模型是否“覆盖”您的系统数组,您应该考虑以下等式

代码语言:javascript
复制
Parray = Pnom*(I + W1*Delta*W2)

并为Delta求解。绘制它(比如用SIGMA ),你会发现它的大小在所有频率上都小于1。Matlab代码将是(将下面列出的所有内容按顺序相乘--我的乘法符号没有出现在发布的答案中...)

代码语言:javascript
复制
 sigma(inv(W1)*inv(Pnom)*(Parrayg-Pnom)*inv(W2))

现在,使用您指定的语法,您将使用以下形式的权重W1和W2:

代码语言:javascript
复制
W1 = [W1_11 0;
    0  W1_22]

代码语言:javascript
复制
W2 = [W2_11 0;
    0  W2_22]

其中,您已经为所有非零项指定了8阶拟合。当然,对于您的示例来说,这有点过头了(尽管对于更复杂的问题,它可能还不错)。

我会试着简单得多,比如

代码语言:javascript
复制
ucover(Parrag,Pnom,3,[],'InputMult')

该语法将产生形式的不确定模型

代码语言:javascript
复制
Pnom*(I + w1*Delta)

其中w1是一个标量的三阶系统。您仍然可以通过绘制SIGMA(Delta)来查看封面,即

代码语言:javascript
复制
sigma((1/w1)*inv(Pnom)*(Parrayg-Pnom))

我希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-03-25 00:41:32

为了创建离散或连续时间的不确定系统,您可以使用与ureal相关的uss

快速示例

定义不确定的螺旋桨半径

代码语言:javascript
复制
% Propeller radius (m)
rp = ureal('rp',13.4e-2,'Range',[0.08 0.16]);

定义不确定连续时间系统

代码语言:javascript
复制
tenzo_unc = uss(A,Bw,Clocal,D,'statename',states,'inputname',inputs,'outputname',outputsLocal);

模拟阶跃响应:

代码语言:javascript
复制
N = 5;
% Prende alcuni campioni del sistema incerto e calcola bound su incertezze
for i=1:1:N
sys{i} = usample(tenzo_unc);
step(sys{i})
hold on
cprintf('text','.');
end

完整示例

基于LQR的四轴飞行器不确定线性化模型控制。代码可用here

阶跃响应

闭环阶跃响应

代码语言:javascript
复制
    <script src="https://gist.github.com/GiovanniBalestrieri/f90a20780eb2496e730c8b74cf49dd0f.js"></script>

注意:如果您没有实用工具cprintf,请在您的文件夹中包含此script并使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23112466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档