中的难点
具有可识别参数的状态空间模型
描述
使用中的难点
创建具有可识别(可估计)系数的连续时间或离散时间状态空间模型,或进行转换动态系统模型变成状态空间形式。
一个带有输入向量的系统的状态空间模型u,输出矢量y,和扰动e连续时间的形式如下:
在离散时间条件下,状态空间模型的形式如下:
为中的难点
模型,状态空间矩阵的元素一个,B,C,D是可估计的参数。状态扰动的元素K也可以是可估计的参数。的中的难点
模型中存储这些矩阵元素的值一个
,B
,C
,D
,K
模型的属性。
创建
你可以获取中的难点
用以下三种方法之一对对象建模。
估计
中的难点
模型基于系统的输入输出测量n4sid
或党卫军
.这些估计命令估计状态空间矩阵的可估计元素的值。估计的值存储在一个
,B
,C
,D
,K
结果的属性中的难点
模型。的报告
属性存储有关估计的信息,例如初始状态值的处理和估计中使用的选项。例如:Sys = ssest(data,nx);A = sys.A;B = sys.B;sys。报告
创建一个
中的难点
使用中的难点
命令。例如:sys = idss(A,B,C,D)
中的难点
模型来配置状态空间模型估计的初始参数化,以拟合测量的响应数据。这样做时,可以在一个或多个状态空间矩阵元素上指定约束。例如,您可以修复某些元素的值,或者为空闲元素指定最小值或最大值。然后,您可以使用已配置的模型作为估计命令的输入参数(党卫军
或n4sid
)来估计这些约束条件下的参数值。有关示例,请参见创建具有可识别参数的状态空间模型而且配置状态空间模型的可识别参数.将现有的动态系统模型转换为
中的难点
使用中的难点
命令。例如:Sys_ss = idss(sys_tf);
有关可用于从中提取信息或转换信息的函数的信息中的难点
建模对象,请参见对象的功能.
语法
描述
创建状态-空间模型
使用指定的状态空间矩阵创建状态空间模型sys
= ids (A, B, C, D)A, B, C, D
.默认情况下,sys
是一个不确定采样时间且无状态扰动元素的离散时间模型。特别是当您希望将初始参数化配置为状态空间估计函数的输入时,请使用此语法n4sid
或党卫军
.
使用一个或多个名称-值对参数设置其他属性。在前面语法中的任何输入参数组合之后指定名称-值对参数。sys
= idss (___,名称,值
)
输入参数
x0
- - - - - -初始状态值
0的列向量(默认)|向量
的列向量指定的初始状态值Nx值。
sys0
- - - - - -动态系统
动态系统模型
动态系统,指定为动态系统模型转换为动态系统模型中的难点
模型。
当
sys0
是一个已识别的模型,其估计的参数协方差在转换过程中丢失。如果您希望在转换过程中转换估计的参数协方差,请使用translatecov
.当
sys0
的状态空间数据是数值(未标识的)模型吗sys0
定义了一个
,B
,C
,D
转换模型的矩阵。扰动矩阵K
固定为零。的NoiseVariance
默认值为眼睛(纽约)
,在那里纽约
输出的数量是多少sys
.
对于语法Sys = idss(sys0,'split')
,sys0
必须为数字(未识别)特遣部队
(控制系统工具箱),zpk
(控制系统工具箱),或党卫军
(控制系统工具箱)模型对象。同时,sys0
至少要有和输出一样多的输入。最后是子系统纽约sys0(: + 1:纽约+ν)
必须包含非零馈通项(子系统必须是双固有的)。
属性
A, B, C, D
- - - - - -状态空间矩阵的值
矩阵
状态空间矩阵的值,指定为对应于A、B、C和D矩阵的矩阵。
对于一个系统Ny输出,Nu输入,Nx状态,状态空间矩阵有以下维数:
一个
- - - - - -Nx——- - - - - -Nx矩阵B
- - - - - -Nx——- - - - - -Nu矩阵C
- - - - - -Ny——- - - - - -Nx矩阵D
- - - - - -Ny——- - - - - -Nu矩阵
如果你有中的难点
模型sys
通过识别和使用党卫军
或n4sid
,然后sys。一个
,sys。B
,sys.C
,sys。D
包含矩阵元素的估计值。
如果你创建一个中的难点
模型sys
使用中的难点
命令,sys。一个
,sys。B
,sys.C
,sys。D
属性指定的状态空间矩阵的初始值A, B, C, D
输入参数。
对于一个中的难点
模型sys
,每个属性sys。一个
,sys。B
,sys.C
,sys。D
是否对应的别名价值
进入结构
的属性sys
.例如,sys。一个
属性值的别名吗sys.Structure.A.Value
.
K
- - - - - -状态扰动矩阵的值
零矩阵(默认)|矩阵
状态扰动矩阵的值K,指定为Nx——- - - - - -Ny矩阵,Nx状态数和Ny是输出的数量。
如果你有中的难点
模型sys
通过识别和使用党卫军
或n4sid
,然后sys。K
包含矩阵元素的估计值。
如果你创建一个中的难点
模型sys
使用中的难点
命令,sys。K
属性指定的状态空间矩阵的初始值K
输入参数。
对于一个中的难点
模型sys
,sys。K
属性值的别名吗sys.Structure.K.Value
.
StateName
- - - - - -国家的名字
”
(默认)|特征向量|单元阵列
状态名,指定为字符向量或单元格数组。
一阶模型-字符向量
具有两个或多个状态的模型-字符向量的单元格数组
〇未命名的国家
”
例子:“速度”
命名一阶模型中唯一的状态
StateUnit
- - - - - -国家单位
”
(默认)|特征向量|单元阵列
状态单位,指定为字符向量或单元格数组。
一阶模型-字符向量
具有两个或多个状态的模型-字符向量的单元格数组
没有指定单位的州
”
使用StateUnit
为了跟踪表示每个状态的单位。StateUnit
对系统行为没有影响。
例子:rad的
对应于一阶模型中唯一状态的单位
结构
- - - - - -关于可估计参数的信息
结构属性值
的可估计参数的信息中的难点
模型,指定为特定于属性的值。结构。一个
,结构。B
,Structure.C
,结构。D
,结构。K
包含有关一个,B,C,D,K矩阵,分别。中的每个参数结构
包含以下字段。
场 | 描述 | 例子 |
---|---|---|
价值 | 参数值-每个属性sys。一个 ,sys。B ,sys.C ,sys。D 是否对应的别名价值 进入结构 的属性sys .南 表示未知参数值。 |
sys.Structure.A.Value 属性的初始值或估计值一个矩阵。sys。一个 属性值的别名吗sys.Structure.A.Value . |
最低 | 参数在估计过程中可以假定的最小值 | sys.Structure.K.Minimum = 0 控件中的所有项K矩阵大于或等于零。 |
最大 | 参数在估计过程中可以假定的最大值 | |
免费的 | 布尔值,指定参数是否为自由估计变量。如果需要在估计过程中固定某个参数的值,请设置相应的参数免费= false . |
如果一个是一个3 × 3矩阵,sys.Structure.A.Free = eyes(3) 修复了所有非对角线的元素一个中指定的值sys.Structure.A.Value .在这种情况下,只有对角线元素一个是有价值的。 |
规模 | 参数值的比例。估计算法不使用规模 . |
|
信息 | 包含字段的结构数组标签 而且单位 用于存储参数标签和单位。指定参数标签和单位为字符向量。 |
“时间” |
属性配置模型参数的示例结构
财产,看到配置状态空间模型的可识别参数.
NoiseVariance
- - - - - -模式创新的差异
标量|矩阵
模型创新的方差(协方差矩阵)e,指定为标量或矩阵。
SISO模型-标量
MIMO模型Ny输出-Ny——- - - - - -Ny矩阵
所识别的模型包含高斯白噪声分量e(t).NoiseVariance
是这个噪声分量的方差。通常,模型估计函数(如党卫军
)决定这个方差。
报告
- - - - - -总结报告
报告字段值
此属性是只读的。
摘要报告,其中包含有关使用估计命令获得的状态空间模型的估计选项和结果的信息,例如党卫军
,ssregest
,n4sid
.使用报告
查找已识别模型的估计信息,包括:
估算方法
估计选项
查询终止条件
估计数据拟合和其他质量度量
如果您通过构造创建模型,则报告
是无关紧要的。
A = [-0.1 0.4;-0.4 - -0.1);B = [1;0);C = [10];D = 0;m = idss(A,B,C,D);sys.Report.OptionsUsed
Ans = []
如果使用估计命令获取,则报告
包含关于估计数据、选项和结果的信息。
负载iddata2z2;M = sest(z2,3);m.Report.OptionsUsed
InitialState: 'auto' N4Weight: 'auto' N4Horizon: 'auto' Focus: 'prediction' EstimateCovariance: 1 Display: 'off' InputOffset: [] OutputOffset: [] OutputWeight: [] SearchMethod: 'auto' SearchOptions: [1x1 idoptions.search. search.]identsolver]正则化:[1x1结构]高级:[1x1结构]
有关此属性以及如何使用它的更多信息,请参阅相应估计命令参考页的Output Arguments部分评估报告.
InputDelay
- - - - - -每个输入通道的输入延迟
0
(默认)|标量|向量
每个输入通道的输入延迟,指定为标量值或数字向量。方法中存储的时间单位指定输入延迟TimeUnit
财产。对于离散时间系统,指定输入延迟为采样时间的整数倍Ts
.例如,设置InputDelay
来3.
指定三个采样时间的延迟。
对于一个系统Nu输入,设置InputDelay
到一个Nu1的向量。该向量的每一项都是一个数值,表示对应输入通道的输入延迟。
你也可以设置InputDelay
到一个标量值,以便对所有通道应用相同的延迟。
OutputDelay
- - - - - -每个输出通道的输出延迟
0
(默认)
对于已识别的系统,例如中的难点
,OutputDelay
固定为零。
TimeUnit
- - - - - -时间变量单位
“秒”
(默认)|“纳秒”
|微秒的
|的毫秒
|“分钟”
|“小时”
|“天”
|“周”
|“月”
|“年”
时间变量的单位是采样时间Ts
,以及模型中的任何时间延迟,指定为标量。
更改此属性不会重新采样或转换数据。修改属性只会改变对现有数据的解释。使用chgTimeUnit
(控制系统工具箱)将数据转换为不同的时间单位
InputName
- - - - - -输入通道名称
”
(默认)|特征向量|单元阵列
输入通道名称,指定为字符向量或单元格数组。
单输入模型-字符向量。例如,
“控制”
.多输入模型-字符向量的单元数组。
或者,使用自动向量展开为多输入模型分配输入名称。例如,如果sys
是一个双输入模型,输入:
sys。InputName = 'controls';
输入名称自动展开为{“控制(1)”,“控制”(2)}
.
当你估计一个模型使用iddata
对象数据
,软件自动设置InputName
来数据。InputName
.
你可以用速记法u
请参阅InputName
财产。例如,sys.u
等于sys。InputName
.
你可以通过几种方式使用输入通道名,包括:
识别模型显示和图上的通道
提取MIMO系统的子系统
在连接模型时指定连接点
InputUnit
- - - - - -输入通道单元
”
(默认)|特征向量|单元阵列
输入通道单位,指定为字符向量或单元格数组:
单输入模型-字符向量
多输入模型-字符向量的单元数组
使用InputUnit
跟踪输入信号单位。InputUnit
对系统行为没有影响。
InputGroup
- - - - - -输入通道组
结构体
没有字段(默认)|结构体
输入通道组,指定为结构。的InputGroup
属性允许您将MIMO系统的输入通道划分为组,以便您可以通过名称引用每个组。在InputGroup
结构,将字段名设置为组名,将字段值设置为属于每个组的输入通道。
例如,创建名为控制
而且噪音
分别包括输入通道1、2和3、5。
sys.InputGroup.controls = [1 2];sys.InputGroup.noise = [3 5];
然后,您可以从控制
使用以下语法输入所有输出:
sys(:,“控制”)
OutputName
- - - - - -输出通道名称
”
(默认)|特征向量|单元阵列
输出通道名称,指定为字符向量或单元格数组。
单输入模型-字符向量。例如,
“测量”
.多输入模型-字符向量的单元数组。
或者,使用自动向量展开为多输出模型分配输出名称。例如,如果sys
是一个双输出模型,输入:
sys。OutputName = 'measurements';
输出名称自动展开为{“测量(1)”,“测量”(2)}
.
当你估计一个模型使用iddata
对象,数据
,软件自动设置OutputName
来数据。OutputName
.
你可以用速记法y
请参阅OutputName
财产。例如,sys.y
等于sys。OutputName
.
你可以通过多种方式使用输出通道名,包括:
识别模型显示和图上的通道
提取MIMO系统的子系统
在连接模型时指定连接点
OutputUnit
- - - - - -输出通道单元
”
(默认)|特征向量|单元阵列
输出通道单元,指定为字符向量或单元格数组。
单输入模型-字符向量。例如,
“秒”
.多输入模型-字符向量的单元数组。
使用OutputUnit
跟踪输出信号单元。OutputUnit
对系统行为没有影响。
OutputGroup
- - - - - -输出通道组
结构体
没有字段(默认)|结构体
输出通道组,指定为结构。的OutputGroup
属性允许您将MIMO系统的输出通道划分为组,并通过名称引用每个组。在OutputGroup
结构,将字段名设置为组名,将字段值设置为属于每个组的输出通道。
例如,创建名为温度
而且测量
分别包括输出通道1、3,5。
sys.OutputGroup.temperature = [1];sys.OutputGroup.measurement = [3 5];
的所有输入中提取子系统测量
使用以下语法输出:
系统(“测量”,:)
名字
- - - - - -系统名称
”
(默认)|特征向量
系统名称,指定为字符向量。例如,“system_1”
.
笔记
- - - - - -系统说明
0
——- - - - - -1
字符串(默认)|字符串|特征向量
希望与系统关联的任何文本,指定为字符串或字符向量的单元格数组。属性存储您提供的任何数据类型。例如,如果sys1
而且sys2
系统模型都是动态的,你可以自己设置吗笔记
属性如下。
sys1。笔记=sys1有一个字符串。;sys2。笔记=sys2有一个字符向量;sys1。笔记sys2。笔记
Ans = "sys1有一个字符串" Ans = " sys2有一个字符向量"
用户数据
- - - - - -要与系统关联的数据
[]
(默认)|任何MATLAB®数据类型
与系统关联的数据,指定为任何MATLAB数据类型。
SamplingGrid
- - - - - -采样网格
[]
(默认)|结构体
模型数组的采样网格,指定为结构。
对于通过对一个或多个自变量采样而得到的已识别线性(IDLTI)模型数组,此属性跟踪与每个模型相关的变量值。当您显示或绘制模型数组时,将显示此信息。使用这些信息将结果追溯到自变量。
将数据结构的字段名设置为采样变量的名称。将字段值设置为与数组中的每个模型相关联的采样变量值。所有抽样变量必须是数值和标量值,并且所有抽样值的数组必须与模型数组的维度匹配。
例如,假设您在系统的各个操作点上收集数据。您可以分别为每个工作点标识模型,然后将结果叠加到单个系统数组中。您可以用有关操作点的信息标记数组中的各个模型。
Nominal_engine_rpm = [1000 5000 10000];sys。SamplingGrid = struct(“转”nominal_engine_rpm)
在这里,sys
包含分别以1000,5000和10000 rpm获得的三个已标识的型号的数组。
对于通过线性化Simulink生成的模型数组金宝app®在多个参数值或工作点建模,软件进行填充SamplingGrid
自动使用对应于数组中每个条目的变量值。
对象的功能
一般来说,任何函数都适用于动态系统模型适用于中的难点
模型对象。这些函数一般有四种类型。
下面的列表包含您可以使用的函数的一个代表性子集中的难点
模型。
分析与仿真
sim卡 |
模拟识别模型的响应 |
预测 |
利用扩展卡尔曼滤波或无气味卡尔曼滤波或粒子滤波预测下一时刻的状态和状态估计误差协方差 |
比较 |
比较确定的模型输出和测量的输出 |
冲动 |
动态系统的脉冲响应图;脉冲响应数据 |
一步 |
动态系统的阶跃响应图;阶跃响应数据 |
波德 |
波德图的频率响应,或幅度和相位数据 |
data2state |
将过去的数据映射到状态空间和非线性ARX模型的状态 |
findstates |
估计模型的初始状态 |
例子
创建具有可识别参数的状态空间模型
创建一个具有可识别参数的四阶SISO状态空间模型。将所有条目的初始状态值初始化为0.1。设置采样时间为0.1 s。
A = blkdiag([-0.1 0.4;-0.4 -0.1],[-1 5;5 1]);B = [1;0 (3,1)];C = [1 0 10 0];D = 0;K = 0 (4,1);X0 = [0.1,0.1,0.1,0.1];Ts = 0.1; sys = idss(A,B,C,D,K,x0,Ts);
sys
是四阶SISO吗中的难点
模型。状态数和输入-输出维数由状态空间矩阵的维数决定。默认情况下,矩阵中的所有项一个
,B
,C
,D
,K
是可识别的参数。
你可以使用sys
为状态空间模型估计指定初始参数化党卫军
或n4sid
.
指定状态空间模型的附加属性
创建一个具有可识别参数的四阶SISO状态空间模型。命名模型的输入和输出通道,并指定分钟作为模型时间单位。
在模型创建过程中,您可以使用名称-值对参数来指定附加的模型属性。
A = blkdiag([-0.1 0.4;-0.4 -0.1],[-1 5;5 1]);B = [1;0 (3,1)];C = [1 0 10 0];D = 0;sys = idss(A,B,C,D,“InputName”,“开车”,“TimeUnit”,“分钟”);
要更改或指定现有模型的大多数属性,您可以使用点表示法。例如,更改输出名称。
sys。OutputName =“扭矩”;
配置状态空间模型的可识别参数
配置一个中的难点
模型,使其没有状态扰动元素,且只有非零项一个
矩阵是可估计的。的值B
矩阵。
配置对象的单个参数中的难点
用于指定状态空间模型估计的约束的模型党卫军
或n4sid
.
创建一个中的难点
模型。
A = blkdiag([-0.1 0.4;-0.4 -0.1],[-1 5;5 1]);B = [1;0 (3,1)];C = [1 0 10 0];D = 0;K = 0 (4,1);X0 = [0.1,0.1,0.1,0.1];sys = idss(A,B,C,D,K,x0,0);
设置K
来
0
创建一个中的难点
不含状态扰动元素的模型。
使用结构
属性来固定某些参数的值。
sys. structure .A free = (A~=0);sys.Structure.B.Free = false;sys.Structure.K.Free = false;
中的条目sys.Structure.A.Free
判断对应的条目是否在sys。一个
自由的(可识别的)或固定的。第一行集合sys.Structure.A.Free
到一个逻辑矩阵真正的
无论一个
非零,和假
其他地方。该设置修复了零条目的值sys。一个
.
其余的行固定所有的值sys。B
而且sys。K
到您在模型创建期间指定的值。
转换传递函数为状态空间模型
用传递函数对动态系统建模。然后使用中的难点
将传递函数模型转换为状态空间形式。
使用idtf
,构造一个连续时间单输入单输出(SISO)传递函数,描述为:
Num = [1 4];Den = [1 20 5];G = idtf(num,den)
G = s + 4 -------------- s^2 + 20 s + 5连续时间识别传递函数。参数化:极点数:2零数:1自由系数数:4参数及其不确定度使用“tfdata”、“getpvec”、“getcov”。现状:由直接构建或改造而产生。不估计。
将传递函数转换为状态空间形式。
sys0 = idss(G)
sys0 =连续时间识别状态空间模型:dx/dt = ax (t) + B u(t) + K e(t) y(t) = C x(t) + D u(t) + e(t) A = x1 x2 x1 -20 -2.5 x2 20 B = u1 x1 2 x2 0 C = x1 x2 y1 0.5 1 D = u1 y1 0 K = y1 x1 0 x2 0参数化:FREE形式(所有系数在A, B, C中自由)。馈通:无扰动分量:无自由系数数:8参数及其不确定性用“idssdata”、“getpvec”、“getcov”表示。现状:由直接构建或改造而产生。不估计。
状态空间模型数组
创建一个状态空间模型数组。
您可以通过以下几种方式之一创建状态空间模型数组:
通过提供来创建数组
的输入参数中的难点
,而不是二维矩阵。
A = rand(2,2,3,4);sysarr = idss(A,[2;1],[1 1],0);
提供多维数组时中的难点
作为状态空间矩阵之一,前两个维度指定了数组中每个模型的状态、输入或输出的数量。其余维度指定数组本身的维度。一个
是一个2 × 2 × 3 × 4的数组。因此,sysarr
是一个3乘4的数组中的难点
模型。每个模型sysarr
有两个状态,由的前两个维度指定一个
.进一步,每个模型在sysarr
有相同的B
,C
,D
值。
通过索引赋值创建数组。
Sysarr = idss(0 (1,1,2));Sysarr (:,:,1) = idss([4 -3;-2 0],[2;1],[1 1],0);sysarr (:: 2) = idss(兰德(2),兰德(2,1),兰德(1、2),1);
第一个命令预分配数组。数组的前两个维度是数组中每个模型的I/O维度。因此,sysarr
为SISO模型的2元向量。
其余命令分配一个中的难点
模型的每个位置sysarr
.数组中的每个模型必须具有相同的I/O尺寸。
添加另一个模型到sysarr
使用堆栈
.
堆栈
是通过索引构建数组的替代方法。
Sysarr = stack(1, Sysarr,idss([1 -2;-4 9],[0;-1],[1 1],0));
这个命令添加了另一个中的难点
的第一个数组维进行建模sysarr
.sysarr
现在是一个3乘1的SISO数组中的难点
模型。
Matlabコマンド
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。