主要内容

号航空母舰

状态空间模型不确定

描述

使用号航空母舰为对象建模以表示不确定动态系统。

模型不确定性的两种主要形式是:

  • 基本微分方程模型参数的不确定性(不确定状态空间矩阵)

  • 频域不确定性,通常通过描述频率响应中的绝对或相对不确定性(不确定或未建模线性动力学)来量化模型不确定性

号航空母舰模型对象可以用其中一种或两种形式的不确定性来表示动态系统。您可以使用号航空母舰进行鲁棒稳定性和性能分析,并测试控制器设计的鲁棒性。

创造

有几种方法可以创建号航空母舰模型对象,包括:

  • 使用tf具有一个或多个不确定实参数(尿素的)。例如:

    p =尿素的(“p”1);Usys = tf(p,[1 p]);

    另一个例子,请参见不确定系数的传递函数

  • 使用党卫军具有不确定状态空间矩阵(umat)。例如:

    p =尿素的(“p”1);A = [0 3*p;- p p ^ 2);B = [0;p];C = 1 (2);D = 0 (2, 1);忙= ss (A, B, C, D);

    另一个例子,请参见不确定状态空间模型

  • 使用模型互连命令将数值LTI模型与不确定元素相结合,如连接,系列,或平行,或模型运算符,如*、+或-。例如:

    sys=tf(1[1]);p=尿素(“p”1);D = ultidyn (“三角洲”usys=p*sys*(1+0.1*D);

    另一个例子,请参见不确定动态系统

  • 将双数组或数字LTI模型转换为号航空母舰形式使用忙=号(系统).在这个例子中,结果是号航空母舰模型对象没有不确定的元素,例如:

    M = tf(1,[1 1]);忙=号航空母舰(M);
  • 使用ucover创建号航空母舰模型,其可能的频率响应范围包括一组数值LTI模型中的所有响应。结果模型将行为范围表示为动态不确定性(ultidyn).

性质

全部展开

不确定模型的标称值,指定为状态空间(党卫军)模型对象。通过将不确定模型的所有不确定控制设计块设为标称值,得到状态空间模型。

模型的不确定元素,指定为一个结构,其字段是不确定块的名称,其值是控件设计块本身。因此,存储在结构中的值可以是尿素的,umat,ultidyn,或其他不确定的控制设计模块。例如,下面的命令创建一个不确定模型有两个不确定参数时,p1p2

p1 =尿素的(“p1”,1);p2=尿素(“p2”3);A = [0 3*p1;p1 p1 ^ 2);B = [0;p2);C = 1 (2);D = 0 (2, 1);忙= ss (A, B, C, D);

这个不确定性的属性是一个有两个字段的结构,p1p2,其值是相应的尿素的不确定的参数。

忙。不确定性
Ans = struct with fields: p1: [1×1 ureal] p2: [1×1 ureal]

您可以分别访问或检查每个不确定参数。例如:

get (usys.Uncertainty.p1)
NominalValue:1模式:'PlusMinus'范围:[0 2]PlusMinus:[-1 1]百分比:[-100 100]自动简化:'basic'名称:'p1'

此属性是只读的。

状态空间矩阵,指定为数字矩阵或不确定矩阵(umat).通过固定所有动态不确定性块来评估状态空间矩阵(udyn,ultidyn)它们的标称值。

  • A.-状态矩阵A.,指定为方阵或umat使用与系统状态相同的行和列。

  • B——Input-to-state矩阵B,指定为矩阵或umat有系统状态的行和有系统输入的列。

  • C——State-to-output矩阵C,指定为矩阵或umat系统输出的行数与系统状态的列数相同。

  • D-馈通矩阵D,指定为矩阵或umat行的数量与系统输出的数量相同,列的数量与系统输入的数量相同。

  • EE用于隐式(描述符)状态空间模型的矩阵,指定为矩阵或umatA..默认情况下E=[],表示状态方程是显式的。指定隐式状态方程Edx/dt=斧头+日分,将此属性设置为与相同大小的方阵A..看到dss有关描述符状态空间模型的更多信息。

州名,指定为以下值之一:

  • 字符向量-用于一阶模型

  • 字符向量单元数组-用于具有两个或多个状态的模型

  • ''-无名州

您可以指定StateName使用字符串,例如“速度”,但州名被存储为字符向量,“速度”

例子:“速度”

例子:{x1, x2的}

状态单位,指定为以下值之一:

  • 字符向量-用于一阶模型

  • 字符向量单元数组-用于具有两个或多个状态的模型

  • ''-对于没有指定单位的状态

使用国家单位为了跟踪每个状态所表示的单位。国家单位对系统行为没有影响。

您可以指定国家单位使用字符串,例如“英里/小时”,但状态单位被存储为字符向量,“英里/小时”

例子:“英里/小时”

例子:{“转”,“rad / s”}

内部延迟,指定为标量或向量。对于连续时间模型,内部延迟用指定的时间单位表示TimeUnit模型对象的属性。对于离散时间模型,内部延迟表示为采样时间的整数倍Ts.例如,内部延迟=3指三个采样周期的延迟。

您可以修改内部延迟的值。但是InternalDelay不能更改,因为它是模型的结构属性。

例如,当关闭带有延迟的系统的反馈回路时,或串联或并联延迟的系统时,会出现内部延迟。有关内部延迟的更多信息,请参见带时滞的闭环反馈

每个输入的延迟,指定为标量或向量。对于具有ν输入,设置输入延迟到一个ν-by-1向量。该向量的每个条目都是一个数值,表示对应输入通道的输入延迟。对于连续时间模型,以存储在中的时间单位指定输入延迟TimeUnit模型对象的属性。对于离散时间模型,以采样时间的整数倍指定输入延迟Ts.例如,输入延迟=3表示三次采样时间的延迟。

设置输入延迟对标量值施加相同的延迟到所有通道。

每个输出的延迟,指定为标量或向量。对于具有纽约输出,设置输出延迟到一个纽约-by-1向量。此向量的每个条目都是一个数值,表示对应输出通道的输出延迟。对于连续时间模型,请以存储在中的时间单位指定输出延迟TimeUnit模型对象的属性。对于离散时间模型,以采样时间的整数倍指定输出延迟Ts.例如,OutputDelay = 3表示三次采样时间的延迟。

设置输出延迟对标量值施加相同的延迟到所有通道。

采样时间,指定为:

  • 0 -用于连续时间模型。

  • 正标量值-用于离散时间模型。以中给出的单位指定采样时间TimeUnit模型的属性。

  • –1-对于采样时间未指定的离散时间模型。

更改此属性不会对模型进行离散化或重新采样。请使用汇集d2c在连续时间表示和离散时间表示之间转换。使用d2d改变离散时间系统的采样时间。

模型时间单位,指定为以下值之一:

  • “纳秒”

  • “微秒”

  • 的毫秒

  • “秒”

  • “分钟”

  • “小时”

  • “天”

  • “周”

  • “月”

  • “年”

您可以指定TimeUnit使用字符串,例如“小时”,但时间单位被存储为字符向量,“小时”

模型属性,例如采样时间Ts,输入延迟,输出延迟,而其他时间延迟则以TimeUnit. 更改此属性不会影响其他属性,因此会更改整个系统行为。使用chgTimeUnit在不改变系统行为的情况下在时间单位之间进行转换。

输入通道的名称,指定为以下值之一:

  • 字符向量-用于单输入模型

  • 字符向量单元数组-用于具有两个或多个输入的模型

  • ''—用于没有指定名称的输入

您可以使用自动向量展开为多输入模型指定输入名称系统是一个双输入模型,输入:

sys。InputName =“控制”;

输入名称自动展开为{“控制(1)”,“控制”(2)}

你可以使用速记符号U参考输入名称所有物例如系统单位相当于sys。输入名称

输入通道名称有多种用途,包括:

  • 在模型显示和绘图上识别通道

  • MIMO系统子系统的提取

  • 在互连模型时指定连接点

您可以指定输入名称使用字符串,例如“电压”,但输入名称被存储为字符向量,“电压”

输入信号的单位,指定为以下值之一:

  • 字符向量-用于单输入模型

  • 字符向量单元数组-用于具有两个或多个输入的模型

  • ''—无指定单位输入

使用InputUnit为了跟踪单位,每个输入信号都以单位表示。InputUnit对系统行为没有影响。

您可以指定InputUnit使用字符串,例如“电压”,但输入单位被存储为字符向量,“电压”

例子:“电压”

例子:{“电压”,“转”}

输入通道组,指定为一个结构,其中字段是组名,值是属于相应组的输入通道的索引。当你使用输入组要将MIMO系统的输入通道分配给组,您可以在需要访问每个组时通过名称引用它。例如,假设您有一个5个输入的模型系统,其中前三个输入是控制输入,其余两个输入表示噪声。分配的控制和噪声输入系统分离群体。

sys.InputGroup.controls=[1:3];sys.InputGroup.noise=[4 5];

使用组名将子系统从控制输入提取到所有输出。

sys(:,“控制”)

例子:结构(“控制”,[1:3],“噪声”,[4 - 5])

输出通道的名称,指定为以下值之一:

  • 字符向量-用于单输出模型

  • 字符向量的单元格数组-用于具有两个或更多输出的模型

  • ''—对于没有指定名称的输出

您可以使用自动向量展开为多个输出模型分配输出名称。例如,如果系统是双输出模型,请输入:

sys。OutputName =“测量”;

输出名称自动展开为{“测量(1)”,“测量”(2)}

你可以使用速记符号Y参考OutputName所有物例如系统y相当于sys。OutputName

输出通道名称有几种用途,包括:

  • 在模型显示和绘图上识别通道

  • MIMO系统子系统的提取

  • 在互连模型时指定连接点

您可以指定OutputName使用字符串,例如“转”,但输出名称存储为字符向量,“rpm”

输出信号的单位,指定为以下值之一:

  • 字符向量-用于单输出模型

  • 字符向量的单元格数组-用于具有两个或更多输出的模型

  • ''-对于没有指定单位的输出

使用输出单元为了跟踪每个输出信号所表示的单位。输出单元对系统行为没有影响。

您可以指定输出单元使用字符串,例如“电压”,但输出单位存储为字符向量,“电压”

例子:“电压”

例子:{“电压”,“转”}

输出通道组,指定为一种结构,其中字段是组名称,值是属于相应组的输出通道的索引。当你使用OutputGroup要将MIMO系统的输出通道分配给组,您可以在需要访问每个组时通过名称引用它。例如,假设您有一个有四个输出的模型系统,第二个输出是温度,其余的是状态测量。将这些输出分配给不同的组。

sys.OutputGroup.temperature = [2];sys.InputGroup.measurements = [1 3 4];

使用组名从测量输出的所有输入中提取子系统。

系统(“测量”,:)

例子:结构(‘温度’、[2]、‘测量’、[1 3 4])

关于模型的文本注释,存储为字符串或字符向量的单元格数组。属性存储您提供的这两种数据类型中的任何一种。例如,假设sys1sys2是动态系统模型,并设置它们笔记属性分别设置为字符串和字符向量。

sys1。笔记="sys1有一个字符串。";sys2。笔记=sys2有一个字符向量。;sys1.Notes sys2.Notes
ans=“sys1有一个字符串。”ans=“sys2有一个字符向量。”

您希望与模型关联并存储的任何类型的数据,指定为任何MATLAB®数据类型。

模型名称,存储为字符向量。您可以指定名称使用字符串,例如“直流电动机”,但输出单位存储为字符向量,“DCmotor”

例子:“system_1”

为模型数组采样网格,指定为结构。对于通过采样一个或多个独立变量而派生的模型数组,此属性跟踪与数组中每个模型关联的变量值。显示或打印模型数组时会显示此信息。使用此信息可将结果追溯到自变量。

将数据结构的字段名设置为抽样变量的名称。将字段值设置为与数组中每个模型相关联的采样变量值。所有抽样变量都应该是数值和标量值,所有抽样值的数组都应该与模型数组的维数相匹配。

例如,假设你创建了一个11乘1的线性模型数组,sysarr,通过对线性时变系统进行定时快照t=0:10.下面的代码使用线性模型存储时间样本。

sysarr。SamplingGrid =结构(“时间”,0:10)

类似地,假设你创建了一个6乘9的模型数组,M,通过对两个变量独立抽样,泽塔W。以下代码附加(ζ,w)价值观M

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)“ζ”ζ,' w 'w)

当您显示M,数组中的每一项都包含相应的泽塔W价值观

M
(:: 1, - 1)(ζ= 0.3 w = 5) = 25  -------------- s ^ 2 + 3 s + 25米(:,:,2,1)[ζ= 0.35 w = 5] = 25  ---------------- s ^ 2 + 3.5 s + 25…

对于通过Simulink线性化生成的模型阵列万博1manbetx®模型在多个参数值或工作点,软件填充取样网格自动使用数组中每个条目对应的变量值。例如,万博1manbetx仿真软件控制设计™命令线性化(万博1manbetxSimulink控制设计)slLinearizer(万博1manbetxSimulink控制设计)填充取样网格就这样。

对象的功能

大多数用于数值LTI模型的函数也适用于号航空母舰模型。这些包括模型互连功能,例如连接反馈,线性分析函数,如波德步骤信息.生成图的一些函数,例如波德,绘制不确定模型的随机样本,让您了解不确定动态的分布情况。但是,当使用这些命令返回数据时,它们仅对系统的标称值进行操作。

此外,还可以使用以下函数:罗布斯塔布wcgain对由以下表达式表示的不确定系统执行鲁棒性和最坏情况分析:号航空母舰您还可以使用调整功能,例如系统用于鲁棒控制器整定。

下面的列表包含了可以使用的函数的一个代表性子集号航空母舰模型。

全部展开

反馈 多模型反馈连接
连接 动态系统互连的框图
系列 两种型号的串联
平行 两种型号并联
动态系统阶跃响应图;阶跃响应数据
波德 频率响应的波德图,或幅值和相位数据
西格玛 动力系统奇异值图
保证金 增益裕度、相位裕度和交叉频率
diskmargin 反馈回路的基于圆盘的稳定裕度
usample 生成不确定或广义模型的随机样本
罗布斯塔布 不确定系统的鲁棒稳定性
robgain 不确定系统的鲁棒性能
wcgain 不确定系统的最坏情况增益
wcsigmaplot 绘制不确定系统的最坏情况增益
musyn 基于mu综合的鲁棒控制器设计
系统 调整固定结构控制系统建模MATLAB

例子

全部折叠

建立具有不确定固有频率和阻尼系数的二阶传递函数。

w0 =尿素的(“w0”,10);zeta=尿素(“ζ”, 0.7,“范围”,[0.6,0.8]);usys=tf(w0^2,[12*zeta*w0 w0^2])
usys = 1输出,1输入,2状态的不确定连续时间状态空间模型。zeta:不确定的真实,名义= 0.7,范围=[0.6,0.8],1个事件类型“usys”。NominalValue“查看名义值”,get(usys)“查看所有属性”,以及“usys. value”。“不确定性”与不确定因素相互作用。

是一个不确定状态空间(号航空母舰)模型与两个控制设计块。不确定实参数w0传递函数中出现5次,分子中出现2次,分母中出现3次。为了减少出现的次数,你可以重写传递函数,将分子和分母除以w0 ^ 2

= tf(1,[1/w0^2 2*zeta/w0 1])
usys = 1输出,1输入,2状态的不确定连续时间状态空间模型。zeta:不确定的真实,名义= 0.7,范围=[0.6,0.8],1个事件类型“usys”。NominalValue“查看名义值”,get(usys)“查看所有属性”,以及“usys. value”。“不确定性”与不确定因素相互作用。

在新的公式中,不确定参数只出现了三次w0.减少控制设计块在模型中的出现次数可以提高涉及模型的计算性能。

检查系统的阶跃响应,以了解不确定性所代表的响应范围。

步骤(忙)

图中包含一个轴对象。axis对象包含21个类型为line的对象。该对象表示usys。

当您使用线性分析命令时,例如波德为了创建不确定系统的响应图,他们自动绘制系统的随机样本。虽然这些样本可以让你了解在不确定性范围内的响应范围,但它们不一定包括最坏情况的响应。为了分析不确定系统的最坏情况响应,使用wcgainwcsigmaplot

要创建不确定状态空间模型,首先使用Control Design Blocks创建不确定元素。然后,使用元素来指定系统的状态空间矩阵。

例如,创建三个不确定的实参数,并以此构建状态空间矩阵。

p1 =尿素的(“p1”10“比例”,50); p2=尿素(“p2”3,“加减符”,[-.5 1.2]);p3=尿素(“p3”,0); A=[-p1p2;0-p1];B=[-p2;p2+p3];C=[10;11-p3];D=[0;0];

用不确定参数构造的矩阵,A.,B,C,为不确定矩阵(umat)对象。将它们用作党卫军结果是一个2输出、1输入、2状态的不确定系统。

sys = ss (A, B, C, D)
sys =不确定连续时间状态空间模型,具有2个输出,1个输入,2个状态。模型的不确定性由以下几个模块组成:p1:不确定实数,名义值= 10,可变性=[-50,50]%,2次出现p2:不确定实数,名义值= 3,可变性=[-0.5,1.2],2次出现p3:不确定实数,名义值= 0,可变性=[-1,1],2次出现NominalValue"查看标称值,"get(sys)"查看所有属性,"sys. value "查看所有属性。“不确定性”与不确定因素相互作用。

显示结果表明,该系统包含了这三个不确定参数。

创建一个不确定系统,包括一个标称模型,该模型具有与频率相关的不确定量。您可以使用ultidyn以及一个表示不确定性频率分布的加权函数。假设在低频(低于3 rad/s)时,模型可以从其标称值变化高达40%。在3 rad/s左右,百分比变化开始增加。在15 rad/s时不确定度超过100%,在大约1000 rad/s时达到2000%。创建一个具有适当频率分布的传递函数,Wunc,作为一个权重函数使用,以频率调制不确定性的量。

Wunc =补足重量的东西(3)0.40,15日;bodemag (Wunc)

图中包含一个轴对象。axis对象包含一个类型为line的对象。该对象表示Wunc。

接下来,创建一个传递函数,表示系统的标称值。对于这个例子,使用一个单极的传递函数s= -60 rad / s。然后,创建一个ultidyn模型表示一输入一输出的不确定性动态,并将加权不确定性添加到标称传递函数中。

sysNom = tf(1,[1/60 1]);unc = ultidyn (“unc”[1],“SampleStateDim”3);%不确定动力学的样本有三种状态usys = sysNom*(1 + Wunc*unc);%设置usys的属性usys.InputName=“你”;忙。OutputName =“fs”;

检查usys的随机样本,以查看不确定动态的影响。

bode(美国标准,美国标准)

图中包含2个轴对象。标题从:u到:fs的轴对象1包含22个line类型的对象。这些对象表示usys,untitled1。轴对象2包含22个line类型的对象。这些对象表示usys,untitled1。

号航空母舰与所有模型对象一样,模型包含存储动力学和模型元数据的属性。查看不确定状态空间模型的属性。

p1 =尿素的(“p1”10“比例”,50); p2=尿素(“p2”3,“加减符”,[-.5 1.2]);p3=尿素(“p3”,0); A=[-p1p2;0-p1];B=[-p2;p2+p3];C=[10;11-p3];D=[0;0];sys=ss(A,B,C,D);%创建uss模型(系统)
NominalValue:[2x1 ss]不确定性:[1x1结构]A:[2x2 umat]B:[2x1 umat]C:[2x2 umat]D:[2x1 double]E:[]状态名称:{2x1 cell}状态单位:{2x1 cell}内部延迟:[0x1 double]输入延迟:0输出延迟:[2x1 double]Ts:0时间单位:“秒”输入名称:{'}输入单位:{'}输入单位:{'}输入组:[1x1结构]输出单位:{2x1 cell}输出单位:{2x1 cell}OutputGroup:[1x1 struct]注意:[0x1 string]用户数据:[]名称:''SamplingGrid:[1x1 struct]

大多数属性的行为与它们的行为类似党卫军模型对象。这个NominalValue属性本身就是党卫军模型对象。因此,您可以像分析任何状态空间模型一样分析标称值。例如,计算标称系统的极点和阶跃响应。

极(sys.NominalValue)
ans =2×1-10 -10
步骤(sys.NominalValue)

图中包含2个轴对象。axis对象1包含一个类型为line的对象。这个对象表示untitled1。axis对象2包含一个类型为line的对象。这个对象表示untitled1。

就像不确定矩阵一样(umat),不确定性属性是包含不确定元素的结构。您可以使用此属性直接访问不确定元素。例如,检查范围名为p2系统

sys.Uncertainty.p2.Range
ans =1×22.5000 - 4.2000

改变的不确定度范围p2系统

sys.Uncertainty.p2.Range=[2 4];

此命令只更改被调用参数的范围p2系统.它不改变变量p2在MATLAB工作空间中。

p2。范围
ans =1×22.5000 - 4.2000
之前介绍过的R2006a