状态空间模型不确定
使用号航空母舰
模型对象代表不确定的动态系统。
模型不确定性的两种主要形式是:
底层微分方程模型参数的不确定性(不确定的状态空间矩阵)
频域不确定性,其通过描述频率响应中的绝对或相对不确定性(不确定或未拼接的线性动态)来频率域不确定性
号航空母舰
模型对象可以用其中一种或两种形式的不确定性来表示动态系统。您可以使用号航空母舰
进行鲁棒稳定性和性能分析,并测试控制器设计的鲁棒性。
有几种方法可以创建号航空母舰
模型对象,包括:
使用特遣部队
具有一个或多个不确定实参数(尿素的
).例如:
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 1]);p =尿素的(“p”1);D = ultidyn ('三角洲',[1 1]);usys = p * sys *(1 + 0.1 * d);
另一个例子,请参见不确定动力学系统.
将双数组或数字LTI模型转换为号航空母舰
形式使用忙=号(系统)
.在这个例子中,结果是号航空母舰
模型对象没有不确定的元素。例如:
M = tf(1,[1 1]);忙=号航空母舰(M);
使用ucover
创建一个号航空母舰
模型,其可能的频率响应范围包括一组数值LTI模型中的所有响应。结果模型将行为范围表示为动态不确定性(ultidyn.
).
名称值
- - - - - -不确定模型的标称值党卫军
模型对象不确定模型的标称值,指定为状态空间(党卫军
)模型对象。通过将不确定模型的所有不确定控制设计块设为标称值,得到状态空间模型。
不确定性
- - - - - -不确定的元素模型的不确定元素,指定为一个结构,其字段是不确定块的名称,其值是控件设计块本身。因此,存储在结构中的值可以是尿素的
,umat
,ultidyn.
,或其他不确定的控制设计模块。例如,下面的命令创建一个不确定模型忙
有两个不确定的参数,p1
和p2
.
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);
的不确定性
的属性忙
是一个有两个字段的结构,p1
和p2
,其值是相应的尿素的
不确定的参数。
忙。不确定性
Ans = struct with fields: p1: [1×1 ureal] p2: [1×1 ureal]
您可以单独访问或检查每个不确定参数。例如:
get (usys.Uncertainty.p1)
名称值:1模式:'PLUSMINUS'范围:[0] PLUSMINUS:[-1 1]百分比:[-100 100]自动缩小:'基本'名称:'p1'
A,B,C,D,E
- - - - - -状态空间矩阵此属性是只读的。
状态空间矩阵,指定为数字矩阵或不确定矩阵(umat
).通过修复所有动态的不确定性块来评估状态空间矩阵(udyn
,ultidyn.
)的标称值。
一个
- 州矩阵一个,指定为方阵或umat
使用与系统状态相同的行和列。
B
- 输入到状态矩阵B,指定为矩阵或umat
有系统状态的行和有系统输入的列。
C
- 状态为输出矩阵C,指定为矩阵或umat
有系统输出的行和有系统状态的列。
D
——直通的矩阵D,指定为矩阵或umat
与系统输出的行数和系统输入的列数一样多。
E
- - - - - -E隐式(描述符)状态空间模型的矩阵,指定为矩阵或umat
和一个
.默认情况下e = []
,意味着状态等式明确。指定隐式状态方程Edx/dt=斧头+部,将此属性设置为相同尺寸的平方矩阵一个
.看dss
有关描述符状态空间模型的详细信息。
StateName
- - - - - -国家的名字{"}
(默认)|字符向量|字符向量的单元格阵列状态名称,指定为以下值之一:
字符向量-用于一阶模型
字符向量的单元格阵列 - 用于具有两个或多个状态的模型
''
- 对于未命名的国家
您可以指定StateName
使用字符串,如“速度”
,但州名被存储为字符向量,“速度”
.
例子:“速度”
例子:{x1, x2的}
组织
- - - - - -国家单位{"}
(默认)|字符向量|字符向量的单元格阵列状态单位,指定为以下值之一:
字符向量-用于一阶模型
字符向量的单元格阵列 - 用于具有两个或多个状态的模型
''
—不指定单位的状态
使用组织
为了跟踪每个状态的单位。组织
对系统行为没有影响。
您可以指定组织
使用字符串,如“MPH”
,但状态单位作为字符向量存储,“英里”
.
例子:“英里”
例子:{'rpm','rad/s'}
InternalDelay
- - - - - -内部延迟内部延迟,指定为标量或向量。对于连续时间模型,内部延迟在由此指定的时间单位中表示TimeUnit
属性。对于离散时间模型,内部延迟被表示为样本时间的整数倍TS.
.例如,InternalDelay = 3
表示三个采样周期的延迟。
可以修改内部延迟的值。然而,条目的数量InternalDelay
不能更改,因为它是模型的结构属性。
例如,当在具有延迟的系统上关闭反馈循环时,或者在串联或并行连接延迟系统时,出现内部延迟。有关内部延迟的更多信息,请参阅关闭反馈循环随时间延迟(控制系统工具箱)。
InputDelay
- - - - - -在输入延迟在每个输入处的延迟,指定为标量或矢量。对于一个系统ν
输入,设置InputDelay
到一个ν
1的向量。这个向量的每一项都是一个数值,表示对应输入通道的输入延迟。对于连续时间模型,在存储的时间单元中指定输入延迟TimeUnit
属性。对于离散时间模型,请在图案时间的整数倍数中指定输入延迟TS.
.例如,InputDelay = 3.
表示延迟三次采样时间。
集InputDelay
对标量值施加相同的延迟到所有通道。
OutputDelay
- - - - - -延迟产出每个输出的延迟,指定为标量或矢量。对于一个系统纽约
输出,OutputDelay
到一个纽约
1的向量。此传感器的每个条目是表示相应输出通道的输出延迟的数值。对于连续时间模型,请在存储在中存储的时间单位中指定输出延迟TimeUnit
属性。对于离散时间模型,以样本时间的整数倍指定输出延迟TS.
.例如,outputDelay = 3.
表示延迟三次采样时间。
集OutputDelay
对标量值施加相同的延迟到所有通道。
TimeUnit
- - - - - -模型时间单位“秒”
(默认)|“分钟”
|的毫秒
|……模型时间单位,指定为以下值之一:
“纳秒”
'微秒'
的毫秒
“秒”
“分钟”
'小时'
'天'
“周”
“月”
'年'
您可以指定TimeUnit
使用字符串,如“小时”
,但时间单位被存储为字符向量,'小时'
.
模型属性,例如样本时间TS.
,InputDelay
,OutputDelay
,和其他时间延迟用指定的单位表示TimeUnit
.更改此属性不会影响其他属性,因此会更改整个系统行为。使用chgTimeUnit
在不改变系统行为的情况下在时间单位之间进行转换。
InputName
- - - - - -输入通道名称{"}
(默认)|字符向量|字符向量的单元格阵列输入通道的名称,指定为以下值之一:
字符向量-用于单输入模型
字符向量单元阵列-用于有两个或更多输入的模型
''
- 对于没有指定名称的输入
您可以使用自动矢量扩展来为多输入模型分配输入名称。例如,如果SYS.
是一个双输入模型,输入:
sys.inputname =.“控制”;
输入名称自动展开{'控件(1)';'控件(2)'}
.
你可以使用速记符号u
参考InputName
财产。例如,sys.u.
相当于sys.inputname.
.
输入通道名有几种用途,包括:
在模型显示和图表上识别通道
MIMO系统子系统的提取
在互连模型时指定连接点
您可以指定InputName
使用字符串,如“电压”
,但输入名称被存储为字符向量,'电压'
.
InputUnit
- - - - - -输入信号单元{"}
(默认)|字符向量|字符向量的单元格阵列输入信号的单位,指定为以下值之一:
字符向量-用于单输入模型
字符向量单元阵列-用于有两个或更多输入的模型
''
- 对于没有指定单位的输入
使用InputUnit
为了跟踪单位,每个输入信号都表示在。InputUnit
对系统行为没有影响。
您可以指定InputUnit
使用字符串,如“电压”
,但输入单位被存储为字符向量,'电压'
.
例子:'电压'
例子:{“电压”,“转”}
InputGroup
- - - - - -输入通道组输入通道组,指定为字段是组名的结构,并且值是属于相应组的输入通道的索引。当你使用InputGroup
要将MIMO系统的输入通道分配给组,您可以在需要访问每个组时通过名称引用它。例如,假设您有一个5个输入的模型SYS.
,其中前三个输入是控制输入,其余两个输入表示噪声。分配的控制和噪声输入SYS.
分开组。
sys.InputGroup.controls = [1:3];sys.InputGroup.noise = [4 5];
使用组名将子系统从控制输入提取到所有输出。
sys (:,“控制”)
例子:struct('控制',[1:3],'噪声',[4 5])
OutputName
- - - - - -输出通道名称{"}
(默认)|字符向量|字符向量的单元格阵列输出通道的名称,指定为以下值之一:
字符向量-用于单输出模型
字符向量的单元格数组-用于具有两个或更多输出的模型
''
—对于没有指定名称的输出
您可以使用自动向量展开为多个输出模型分配输出名称。例如,如果SYS.
是一个双输出模型,输入:
sys。OutputName =“测量”;
输出名称自动展开{“测量(1)”,“测量”(2)}
.
你可以使用速记符号y
参考OutputName
财产。例如,sys.y.
相当于sys。OutputName
.
输出通道名称有几种用途,包括:
在模型显示和图表上识别通道
MIMO系统子系统的提取
在互连模型时指定连接点
您可以指定OutputName
使用字符串,如“转”
,但输出名称存储为字符向量,'rpm'
.
OutputUnit
- - - - - -输出信号单位{"}
(默认)|字符向量|字符向量的单元格阵列输出信号单元,指定为其中一个值:
字符向量-用于单输出模型
字符向量的单元格数组-用于具有两个或更多输出的模型
''
—无指定单位输出
使用OutputUnit
要跟踪单位,每个输出信号都表示在。OutputUnit
对系统行为没有影响。
您可以指定OutputUnit
使用字符串,如“电压”
,但输出单元被存储为字符向量,'电压'
.
例子:'电压'
例子:{“电压”,“转”}
OutputGroup
- - - - - -输出通道组输出通道组,指定为一个结构,其中字段是组名,值是属于相应组的输出通道的索引。当你使用OutputGroup
要将MIMO系统的输出通道分配给组,您可以在需要访问每个组时通过名称引用它。例如,假设您有一个有四个输出的模型SYS.
,第二个输出是温度,其余的是状态测量。将这些输出分配给不同的组。
sys.OutputGroup.temperature = [2];sys.InputGroup.measurements = [1 3 4];
使用组名称从所有输入中提取子系统到测量输出。
SYS(“测量”:)
例子:结构(“温度”,[2],“测量”,[1 3 4])
笔记
- - - - - -关于模型的文本注释[0×1字符串]
(默认)|细绳|字符向量的细胞阵列关于模型的文本注释,存储为字符串或字符向量的单元格数组。属性存储您提供的这两种数据类型的任何一个。例如,假设SYS1.
和SYS2.
是动态系统模型,并设置它们笔记
属性分别设置为字符串和字符向量。
sys1。笔记=“sys1有一个字符串。”;sys2。笔记=sys2有一个字符向量。;sys1.notes sys2.notes.
Ans = ' sys1 has a string. ' Ans = 'sys2 has a character vector.'
用户数据
- - - - - -与模型相关的数据[]
(默认)|任何数据类型您希望与模型关联并存储的任何类型的数据,指定为任何MATLAB®数据类型。
姓名
- - - - - -模型名称''
(默认)|字符向量模型名称,存储为字符向量。您可以指定姓名
使用字符串,如“DCmotor”
,但输出单元被存储为字符向量,“DCmotor”
.
例子:'system_1'
SamplingGrid.
- - - - - -模型阵列的采样网格为模型数组采样网格,指定为结构。对于通过抽样一个或多个独立变量而派生的模型数组,此属性跟踪与数组中每个模型相关联的变量值。显示或绘制模型阵列时出现此信息。使用此信息将跟踪结果追溯到独立变量。
将数据结构的字段名称设置为采样变量的名称。将字段值设置为与数组中的每个模型关联的采样变量值。所有采样变量都应为数字和标量值,并且所有采样值阵列应匹配模型阵列的尺寸。
例如,假设你创建了一个11乘1的线性模型数组,SYSARR.
,通过对线性时变系统进行定时快照t = 0:10
.以下代码使用线性模型存储时间样本。
sysarr。SamplingGrid =结构(“时间”,0:10)
同样,假设您创建了一个6×9的型号数组,米
,通过对两个变量独立抽样,Zeta.
和w
.下面的代码附加了(Zeta,W)
值米
.
[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)“ζ”ζ,' w ',w)
当您显示米
,数组中的每一项都包含相应的Zeta.
和w
价值观。
米
(:: 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中线性化生成的模型阵列金宝app®软件填充多个参数值或操作点的模型SamplingGrid.
自动使用数组中每个条目对应的变量值。例如,金宝appSimulink Control Design™命令线性化
和slLinearizer
填充SamplingGrid.
以这种方式。
大多数在数字LTI模型上工作的函数也可以号航空母舰
模型。这些包括模型互连功能,例如连接
和回馈
,以及线性分析功能,如波德
和stepinfo
.生成图的一些函数,例如波德
和步
,绘制不确定模型的随机样本,让你对不确定动力学的分布有一个感觉。然而,当您使用这些命令返回数据时,它们仅对系统的标称值进行操作。
此外,您还可以使用诸如此类的功能robstab
和wcgain
对以。表示的不确定系统进行鲁棒性和最坏情况分析号航空母舰
模型。您还可以使用诸如systune
用于鲁棒控制器整定。
下面的列表包含了可以使用的函数的一个代表性子集号航空母舰
模型。
步 |
动态系统阶跃响应图;阶跃响应数据 |
波德 |
频率响应或幅度和相位数据的Bode图 |
σ |
动态系统的奇异值图 |
保证金 |
增益裕度、相位裕度和交叉频率 |
diskmargin. |
反馈回路的基于圆盘的稳定裕度 |
USS / USAMPLE. |
生成不确定或广义模型的随机样本 |
robstab |
不确定系统的稳定稳定性 |
抢劫 |
不确定系统的鲁棒性能 |
wcgain |
不确定系统的最坏情况 |
wcsigmaplot. |
绘制不确定系统的最坏情况 |
使用不确定的自然频率和阻尼系数创建二阶传递函数。
w0 =尿素的('w0',10);Zeta =尿尿(“ζ”, 0.7,“范围”,[0.6,0.8]);USYS = TF(W0 ^ 2,[1 2 * 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状态的不确定连续时间状态空间模型。模型不确定性由以下块组成:W0:不确定的真实,标称= 10,可变性= [-1,1],3个出现Zeta:不确定的真实,标称= 0.7,范围= [0.6,0.8],1个出现类型“usys.nominalvalue“看名义值,”get(usys)“查看所有属性,以及”usys.unctia绘图“与不确定元素互动。
在新的公式中,不确定参数只出现了三次W0.
.减少模型中控制设计块的出现次数可以提高涉及模型的计算的性能。
检查系统的步骤响应,以获得不确定性所代表的响应范围的感觉。
步骤(忙)
当您使用线性分析命令时,例如步
和波德
为了创建不确定系统的响应图,他们自动绘制系统的随机样本。虽然这些样本可以让你了解在不确定性范围内的响应范围,但它们不一定包括最坏情况的响应。为了分析不确定系统的最坏情况响应,使用wcgain
或wcsigmaplot.
.
要创建不确定状态空间模型,首先使用Control Design Blocks创建不确定元素。然后,使用元素来指定系统的状态空间矩阵。
例如,创建三个不确定的真实参数并从中构建状态空间矩阵。
p1 =尿素的(“p1”10“比例”, 50);p2 =尿素的(“p2”,3,“加减符”,[ - 。5 1.2]);p3 =尿尿(“p3”, 0);A = [-p1 p2;0 p1);B = [p2;p2和p3);C = [1 0;1 1-p3];D = [0;0);
具有不确定参数的矩阵,一个
,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次出现“sys.nominalvalue”看标称值,“get(sys)”查看所有属性,以及“sys.uncteraintay”到与不确定的元素互动。
显示结果表明,该系统包含了这三个不确定参数。
创建一个不确定系统,该系统包含一个具有频率依赖的不确定性量的标称模型。你可以使用ultidyn.
以及一个表示不确定性频率分布的加权函数。假设在低频(低于3 rad/s)时,模型可以从其标称值变化高达40%。在3 rad/s左右,百分比变化开始增加。在15 rad/s时不确定度超过100%,在大约1000 rad/s时达到2000%。创建一个具有适当频率分布的传递函数,Wunc
,作为一个权重函数使用,以频率调制不确定性的量。
Wunc =补足重量的东西(3)0.40,15日;bodemag (Wunc)
接下来,创建一个传递函数,表示系统的标称值。对于这个例子,使用一个单极的传递函数年代= -60 rad / s。然后,创建一个ultidyn.
模型表示一输入一输出的不确定性动态,并将加权不确定性添加到标称传递函数中。
sysNom = tf(1,[1/60 1]);unc = ultidyn ('UNC',[1 1],'samplestationim'3);%不确定动态的样本有三个州usys = sysNom*(1 + Wunc*unc);%SETS USYS的属性忙。InputName =“u”;忙。OutputName ='FS';
检查USYS的随机样本,看看不确定动态的效果。
波德(忙usys.Nominal)
号航空母舰
模型,如所有模型对象,包括存储动态和模型元数据的属性。查看不确定的状态空间模型的属性。
p1 =尿素的(“p1”10“比例”, 50);p2 =尿素的(“p2”,3,“加减符”,[ - 。5 1.2]);p3 =尿尿(“p3”, 0);A = [-p1 p2;0 p1);B = [p2;p2和p3);C = [1 0;1 1-p3];D = [0;0);sys = ss (A, B, C, D);创建uss模型得到(SYS)
名称值:[2x1 ss]不确定性:[1x1 struct] a:[2x1 umat] c:[2x2 umat] d:[2x1 double] e:[] statename:{2x1 cell} stateUnit:{2x1单元格:[0x1 double]输入:0 outputdelay:[2x1 double] ts:0 oneUnuit:'秒'InputName:{''} InputUpit:{''} InputGroup:[1x1 struct] OutputName:{2x1 Cell} OutputUnit:{2x1 Cell} OutputGroup:[1x1 struct]注意:[0x1字符串] userdata:[]名称:''samplinggrid:[1x1 struct]
大多数属性的行为与它们的行为类似党卫军
模型对象。的名称值
属性本身就是党卫军
模型对象。因此,您可以根据任何状态空间模型分析标称值。例如,计算标称系统的磁极和步进响应。
杆(sys.nominalvalue)
ans =2×1-10 -10
步骤(sys.NominalValue)
如不确定矩阵(umat
), 这不确定性
属性是一个包含不确定元素的结构。您可以使用此属性直接访问不确定的元素。例如,检查范围
不确定的元素命名p2
在SYS.
.
sys.Uncertainty.p2.Range
ans =1×22.5000 4.2000
改变不确定性范围p2
在SYS.
.
sys.Uncertainty.p2.Range=[2 4];
此命令只更改被调用参数的范围p2
在SYS.
.它不会改变变量p2
在Matlab工作区。
p2.range.
ans =1×22.5000 4.2000
你点击一个链接对应于这个MATLAB命令:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。