党卫军
使用时域或频域数据估计状态空间模型
语法
描述
估计状态空间模型
估计连续时间状态空间模型sys
= ss (tt
,nx
)sys
的订单nx
,使用时间表中的所有输入和输出信号tt
.您可以将此语法用于SISO和MISO系统。该函数假设时间表中的最后一个变量是单个输出信号。
sys
是一个中的难点
模型的形式如下:
一个,B,C,D,K是状态空间矩阵。u(t)为输入,y(t)为输出,e(t)为扰动,且x(t的向量nx
州。
所有条目一个,B,C,K默认为自由可估计参数。D默认情况下固定为零,这意味着没有馈通,静态系统(Nx = 0
).
要估计离散时间模型,请设置“t”
到使用名称-值语法的模型示例时间。要估计MIMO模型,使用n-v语法指定输入和输出通道,使用“InputName”
和“OutputName”
对应的时间表变量名。你也可以使用“InputName”
和“OutputName”
中所有可用通道时指定特定通道tt
.
估计时间序列状态空间模型
中指定变量名的时间表输出信号,用于估计使用该时间表输出信号的多元时间序列模型sys
= ss (tt
,nx
,“OutputName”
outputVariables,“InputName”
[])outputVariables
.该函数将指定的变量解释为多元时间序列。如果你指定了所有的变量tt
在“OutputName”
,你可以省略的规格“InputName”
.
指定额外的模型选项
初始参数配置
例子
状态空间模型
估计一个状态空间模型,并将其响应与测量输出进行比较。
加载存储在时间表中的输入/输出数据。
负载sdata1tt1
估计一个四阶状态空间模型。
Nx = 4;Sys = ssest(tt1,nx);
将模拟模型响应与实测输出进行比较。
比较(tt1 sys)
结果表明,模拟模型与估计数据的拟合率大于70%。
的方法可以查看有关评估的更多信息中的难点
财产sys。报告
.
sys。报告
ans =状态:'估计使用SSEST与预测焦点'方法:'SSEST' InitialState: '零' N4Weight: 'CVA' N4Horizon:[6 10 10]适合:[1x1 struct]参数:[1x1 struct] OptionsUsed: [1x1 idoptions。ssest] RandState: [] DataUsed: [1x1 struct] terminate: [1x1 struct]
例如,查找有关终止条件的更多信息。
sys.Report.Termination
ans =带字段的结构:WhyStop: '沿直线搜索方向没有改进。'迭代:7 FirstOrderOptimality: 85.9759 FcnCount: 123 UpdateNorm: 10.0081 LastImprovement: 0
该报告包括关于迭代次数和评估停止迭代的原因的信息。
将SISO矩阵数据转换为时间表
加载由输入向量组成的数据umat1
,输出向量ymat1
,和采样时间Ts
.
负载sdata1umat1ymat1Ts
将数据合并到单个时间表中tt
.的前两行tt
.
Tt =时间表(umat1,ymat1,“rowtimes”秒(Ts *(1:尺寸(umat1, 1))));头(tt, 2)
时间umat1 ymat1 _______ _____ ________ 0.1秒1 1.1082 -0.58724 0.2秒1
使用tt
估计一个连续时间状态空间模型。
Sys = ssest(tt,2);
将模型输出与估计数据进行比较。
比较(tt系统)
确定最佳估计模型顺序
加载输入-输出数据z1
,存储在iddata
对象。这是相同的数据,用于估计四阶模型状态空间模型.
负载iddata1z1
通过指定参数确定最优模型顺序nx
作为一个范围1:10
.
Nx = 1:10;Sys = sest(z1,nx);
自动生成的图形显示指定的顺序模型的汉克尔奇异值nx
.
具有相对较小汉克尔奇异值的状态可以被安全地丢弃。建议的默认顺序选择为2
.
中选择模型顺序选择的顺序列出并单击应用.
识别带有输入延迟的状态空间模型
加载时域系统响应数据。
负载iddata7z7;
确定数据的四阶状态空间模型。指定的已知延迟2
秒为第一次输入和0
秒表示第二次输入。
Nx = 4;Sys = sest(z7(1:300),nx,“InputDelay”, 2, 0);
将MIMO矩阵数据转换为连续时间模型估计的时间表
通过首先将矩阵数据转换为时间表来估计连续时间模型函数。
加载数据,其中包括输入矩阵usteam
,输出矩阵ysteam
,采样时间Ts
.
负载sdatasteam.matusteamysteamTs
结合usteam
和ysteam
单一的时间表ttsteam
.为了为每个通道创建一个变量,必须显式地指定每个矩阵列。
tts =时间表(usteam (: 1), usteam (:, 2), ysteam (: 1), ysteam (:, 2),...“rowtimes”秒(Ts *(1:尺寸(usteam, 1))));头(tts, 4)
时间Var1 Var2 Var3 Var4 ________ _______ _______ ________ _________ 0.05秒-1.5283 2.0584 0.57733 -0.12274 0.1秒1.4412 -2.005 0.75804 -0.086114 0.15秒1.4314 2.0584 -0.76577 -0.19845 0.2秒1.4412 -1.9806 0.47721 -0.20577
估计一个连续时间状态空间模型。
Nx = 3;Sysc = sest(tts,nx,“InputName”, (“Var1”“Var2”),“OutputName”, (“Var3”“Var4”]);
将模型与数据进行比较。
sysc比较(tts)
修改形式、馈通和扰动模型矩阵
修改A, B和C矩阵的标准形式,在D矩阵中包含一个馈通项,并在K矩阵中消除干扰模型估计。
加载输入输出数据和估计四阶系统使用党卫军
默认选项。
负载iddata1z1Sys1 = sest(z1,4);
指定配套表单并比较一个
带有默认值的矩阵一个
矩阵。
Sys2 = sest(z1,4,“形式”,“同伴”);A1 = sys1。一个
A1 =4×4-0.5155 -3.8483 0.6657 -0.2666 5.8665 -2.7285 1.0649 -1.4694 -0.4487 0.9308 -0.6235 18.8148 -0.4192 0.5595 -16.0688 0.5399
A2 = sys2。一个
A2 =4×4103.× 00 00 -7.1122 0.0010 00 -0.9547 0 0.0010 0 -0.3263 00 0.0010 -0.0033
包括一个馈通术语和比较D
矩阵。
Sys3 = sest(z1,4,“引线”1);D1 = sys1。D
D1 = 0
D3 = sys3。D
D3 = 0.0339
消除扰动建模并进行比较K
矩阵。
Sys4 = sest(z1,4,“DisturbanceModel”,“没有”);K1 = sys1。K
K1 =4×10.0520 0.0973 0.0151 0.0270
K4 = sys4。K
K4 =4×10 0 0 0
用独立参数估计初始状态
指定党卫军
估计初始状态作为独立的估计参数。
党卫军
可以使用以下几种方法之一处理初始状态。默认情况下,党卫军
根据您的估计数据自动选择方法。您可以通过使用修改选项集来自己选择方法ssestOptions
.
加载输入-输出数据z1
并估计一个二阶状态空间模型sys
使用默认选项。使用返回初始状态的语法x0
.
负载iddata1z1[sys,x0] = sest(z1,2);x0
x0 =2×10 0
缺省情况下,使用“汽车”
设置InitialState
.找出哪种方法党卫军
的价值应用于InitialState
在sys。Repor
t。
sys.Report.InitialState
Ans = ' 0 '
该软件应用了'零的
方法,这意味着软件将初始状态设置为零,而不是估计它们。这种选择是一致的0
返回的值x0
.
指定党卫军
估计初始状态,而不是作为独立参数使用“估计”
设置。使用ssestOptions
创建一个修改过的选项集,并指定该选项集来估计一个新模型。
opt = ssestOptions(“InitialState”,“估计”);[sys1,x0] = sest(z1,2,opt);x0
x0 =2×10.0068 - 0.0052
x0
现在已经用非零值估计了参数。
使用正则化估计状态空间模型
从窄带宽信号中得到二阶系统的正则化五阶状态空间模型。
负载估计数据。
负载regularizationExampleDataeData;
创建用于生成估计数据(真实系统)的传递函数模型。
trueSys = idtf([0.02008 0.04017 0.02008],[1 -1.561 0.6414],1);
估计一个非正则状态空间模型。
opt = ssestOptions(“SearchMethod”,“lm”);m = sest(数据表,5,“形式”,“模态”,“DisturbanceModel”,“没有”,“t”、eData.Ts选择);
估计一个正则化的状态空间模型。
opt. regulalizing . lambda = 10;mr = sest(数据表,5,“形式”,“模态”,“DisturbanceModel”,“没有”,“t”、eData.Ts选择);
将模型输出与估计数据进行比较。
比较(eData, m先生);
比较模型的脉冲响应。
冲动(trueSys, m先生,50);传奇(“trueSys”,“米”,“先生”);
用结构化估计估计部分已知状态空间模型
估计测量输入-输出数据的状态空间模型。使用状态空间模型配置用于估计的参数约束和初始值。
创建一个中的难点
模型来指定用于估计的初始参数化。
A = blkdiag([-0.1 0.4;-0.4 -0.1],[-1 5;5 1]);B = [1;0 (3,1)];C = [1 1 1 1];D = 0;K = 0 (4,1);X0 = [0.1 0.1 0.1 0.1 0.1];Ts = 0; init_sys = idss(A,B,C,D,K,x0,Ts);
设置K
来0
创建一个中的难点
不含状态扰动元素的模型。
使用结构
属性来修复某些模型参数的值。配置模型以便B
和K
都是固定的,只有的非零项一个
是有价值的。
init_sys.Structure.A.Free=(一个~=0); init_sys.Structure.B.Free = false; init_sys.Structure.K.Free = false;
中的条目init_sys.Structure.A.Free
判断对应的条目是否在init_sys。一个
免费(真正的
)或固定(假
).
加载测量数据并使用指定的参数约束和初始值估计状态空间模型init_sys
.
负载iddata2z2;Sys = ssest(z2,init_sys);
的估计参数sys
满足指定的约束init_sys
.
输入参数
tt
- - - - - -基于时间表的估计数据
时间表|单元格时间表数组。
估计数据,指定为均匀抽样时间表
其中包含表示输入和输出通道的变量,或者对于多实验数据,包含时间表的单元格数组。
使用整个时间表
如果你想用所有的变量tt
作为输入或输出通道,并且对变量进行组织,使输入通道变量集后面跟着输出通道变量集,则:
对于SISO系统,请指定
tt
作为一个N年代-by-2时间表,其中N年代为样本数,两个时间表变量分别代表测量的输入通道和输出通道。对于MIMO系统,请指定
tt
作为一个N年代————(Nu+Ny)时间表,其中Nu输入的数量和Ny是输出的数量。第一个Nu变量必须包含输入通道和其余部分Ny变量必须包含输出通道。在估计状态空间或传递函数模型时,还必须显式地指定输入和输出通道,如下节所述。
对于多实验数据,指定数据为Ne-by-1单元格的时间表数组,其中Ne是实验的次数。所有实验的采样次数必须匹配。
从时间表中选择变量
如果希望显式地标识输入和输出通道,例如只使用可用通道的一个子集、输入和输出通道变量混合,或者估计MIMO状态空间或传递函数模型时,请使用“InputName”
和“OutputName”
名称-值参数用于指定将哪些变量用作输入和输出。
例如,假设tt
包含6个通道变量:“u1”
,“u2”
,“u3”
,“日元”
,“日元”
,“y3”
.对于估计,您需要使用变量“u1”
和“u2”
作为输入和变量“日元”
和“y3”
作为输出。使用以下命令执行估算:
sys = ss (tt, __“InputName”,“u1”“u2”,“OutputName”,(“日元”“y3))
使用时间表来估计时间序列模型
如果您想估计时间序列模型而不是输入/输出模型,请仅使用来自的输出变量tt
.你可以指定tt
仅包含所需的输出变量,或从中提取输出变量tt
如果tt
也包含输入变量。规范方法类似于用于输入/输出模型估计的方法。
对于单输出系统,请指定
tt
作为一个N年代1的时间表。对于多元系统,请指定
tt
作为一个N年代————(Ny)的时间表。即使你打算使用所有的变量tt
时,必须使用“OutputName”
参数,以便软件不会将它们解释为输入变量。
关于时间表tt
它的变量超出了您想要使用的范围,例如输入变量或额外的输出变量,指定您想要使用的输出变量和“InputName”
,一个空数组。
例如,假设tt
包含6个变量:“u1”
,“u2”
,“u3”
,“日元”
,“日元”
,“y3”
.对于时间序列估计,您希望使用输出变量“日元”
和“y3”
.使用以下命令执行估算:
sys = ss (tt, __“OutputName”,“日元”“y3”,“InputName”,[])
有关使用估计数据类型的详细信息,请参见系统标识工具箱中的数据类型.
u
,y
- - - - - -矩阵估计数据
矩阵|矩阵单元阵列
估计数据,为SISO系统指定为逗号分隔的对N年代-by-1实值矩阵,包含均匀采样的输入和输出时域信号值。在这里,N年代是样本的数量。
对于MIMO系统,请指定u
,y
作为一个输入/输出矩阵对,具有以下维度:
u
- - - - - -N年代——- - - - - -Nu,在那里Nu是输入的数量。y
- - - - - -N年代——- - - - - -Ny,在那里Ny是输出的数量。
对于多实验数据,请指定u
,y
作为一对1 × -Ne单元格数组,其中Ne是实验的次数。所有实验的采样次数必须匹配。
对于只包含输出而没有输入的时间序列数据,请指定y
只有。
限制
连续时间估计不建议使用矩阵,因为数据不提供样本时间。软件假设数据采样频率为1hz。对于连续时间估计,建议将每个矩阵转换为a
时间表
.例如,转换矩阵嗯
和ym
到一个时间表
tt
采样时间为0.5分钟,使用以下命令。Tt =时间表(嗯,ym,“rowtimes”分钟(0.5 *(1:尺寸(u, 1))))
有关使用估计数据类型的详细信息,请参见系统标识工具箱中的数据类型.
数据
- - - - - -估计数据对象
iddata
对象|的朋友
对象|idfrd
对象
nx
- - - - - -估计模型的阶数
1:10
(默认)|正整数标量|正整数向量|0
估计模型的顺序,指定为非负整数或包含一系列正整数的向量。
如果您已经知道您希望您的估计模型有什么顺序,请指定
nx
作为一个标量。如果您想比较潜在订单的范围,以为估计模型选择最有效的订单,请在中指定范围
nx
.党卫军
创建汉克尔奇异值图,显示系统中每个状态的相对能量贡献。汉克尔奇异值相对较小的状态对模型精度的贡献很小,可以被丢弃,影响很小。您保留的最高状态的索引是模型顺序。绘图窗口包括对使用顺序的建议。您可以接受这个建议,也可以输入不同的订单。有关示例,请参见确定最佳估计模型顺序.如果您没有指定
nx
,或者您指定nx
作为最好的
,软件自动选择nx
从range开始1:10
.如果您正在识别一个静态系统,请设置
nx
来0
.
选择
- - - - - -估计选项
ssestOptions
选项设置
的估计选项ssestOptions
选项设置。指定的选项选择
包括:
估计目标
初始条件的处理
正则化
用于估计的数值搜索方法
Intersample行为
展示如何使用的例子选择
,请参阅用独立参数估计初始状态和使用正则化估计状态空间模型.
init_sys
- - - - - -配置sys初始参数化的线性系统
中的难点
模型|线性模型|结构
配置初始参数化的线性系统sys
,指定为中的难点
模型或结构你获得init_sys
通过使用测量数据或直接构造来进行估计。
如果init_sys
是一个中的难点
模型中,党卫军
的参数值init_sys
作为初步估计sys
.有关如何指定的信息中的难点
,请参阅用结构化参数化估计状态空间模型.党卫军
的参数上的约束init_sys
,例如固定系数和最小/最大边界。
使用结构
的属性init_sys
属性的初始参数值和约束一个,B,C,D,K矩阵。例如:
你必须为所有矩阵参数分配有限的初始值。
如果init_sys
不是状态空间(中的难点
)模型,软件先进行转换init_sys
到一个中的难点
模型。党卫军
使用结果模型的参数作为估计的初始猜测。
如果您没有指定选择
和init_sys
是通过估计得到的,那么软件使用估计选项从init_sys.Report.OptionsUsed
.
有关示例,请参见用结构化估计估计部分已知状态空间模型.
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:sys = ssest(data,nx,'Ts',0.1)
InputName
- - - - - -输入通道名称
”“
(默认)|字符串|特征向量|字符串数组|字符向量的单元格数组
输入时间表数据的通道名称,指定为字符串、字符向量、字符串或字符向量的数组或单元格数组。默认情况下,该软件解释除最后一个变量以外的所有变量tt
作为输入通道。当您希望选择时间表变量的子集作为输入通道使用时“InputName”
来识别他们。例如,sys = ssest(tt,__,'InputName',["u1" "u2"])
选择变量u1
和u2
作为估计的输入通道。
OutputName
- - - - - -输出信号名称
”“
(默认)|特征向量|字符串|字符向量或字符串的单元格数组
时间表数据的输出通道名称,指定为字符串、字符向量、字符串或字符向量的数组或单元格数组。默认情况下,软件解释中的最后一个变量tt
作为唯一的输出通道。当您希望选择时间表变量的子集作为输出通道时,请使用“OutputName”
来识别他们。例如,sys = ssest(tt,__,'OutputName',["y1" "y3"])
选择变量日元
和y3
作为估计的输出通道。
Ts
- - - - - -估计模型的采样时间
0
(持续时间)(默认)|数据采样时间|积极的标量
估计模型的采样时间,由逗号分隔的对组成“t”
,要么0
或者一个正标量。
对于连续时间模型,请指定
“t”
作为0
.对于离散时间模型,指定
“t”
作为数据采样时间单位的定义如下:对于基于时间表的数据-时间表
时间
列对于基于矩阵的数据-秒
对于数据对象,例如
iddata
对象-数据。时间Unit
财产
获取时间表的数据采样时间tt
,使用时间表属性tt.Properties.Timestep
.
InputDelay
- - - - - -输入延迟
0
(默认)|标量|向量
每个输入通道的输入延迟,指定为由逗号分隔的对组成“InputDelay”
和一个数值向量。
对于连续时间模型,请指定
“InputDelay”
在存储在时间表中的时间单位中,数据对象TimeUnit
属性,对于矩阵数据,单位为秒。对于离散时间模型,指定
“InputDelay”
是采样时间的整数倍Ts
.例如,设置“InputDelay”
来3.
指定三个采样周期的延迟。
对于一个系统Nu输入,设置InputDelay
到一个Nu1的向量。该向量的每一项都是一个数值,表示对应输入通道的输入延迟。有关示例,请参见识别带有输入延迟的状态空间模型.
若要对所有通道应用相同的延迟,请指定InputDelay
作为一个标量。
形式
- - - - - -标准形式的类型
“免费”
(默认)|“模态”
|“同伴”
|“规范”
的标准形式的类型sys
,指定为逗号分隔的对,由“形式”
和以下值之一:
“免费”
—矩阵的所有元素一个,B,C,D,K被视为自由。“模态”
——获得sys
在情态形式中。“同伴”
——获得sys
以同伴的形式。“规范”
——获得sys
在可观测标准形式中。
有关规范形式的定义,请参见状态实现.
有关更多信息,请参见用典型参数化估计状态空间模型.有关示例,请参见修改形式、馈通和扰动模型矩阵.
直通的
- - - - - -从输入到输出的直接馈通
0
(默认)|1
|逻辑向量
从输入到输出的直接馈通,指定为由逗号分隔的对组成“引线”
和一个长度的逻辑向量Nu,在那里Nu是输入的数量。如果你指定直通的
作为一个逻辑标量,该值应用于所有输入。对于静态系统,软件总是假设“引线”
是1
.
有关示例,请参见修改形式、馈通和扰动模型矩阵.
DisturbanceModel
- - - - - -选择估计时域噪声成分参数
“估计”
(默认)|“没有”
选项,用于估计K矩阵中的时域噪声成分参数,指定为由逗号分隔的对组成“DisturbanceModel”
和以下值之一:
“估计”
-估计噪音成分。的K矩阵被视为一个自由参数。“没有”
-不要估计噪音成分。的元素K矩阵都固定在0。
对于频域数据,软件假设“DisturbanceModel”
是“没有”
.
有关示例,请参见修改形式、馈通和扰动模型矩阵.
输出参数
sys
-识别的状态空间模型
中的难点
模型
标识的状态空间模型,返回为中的难点
模型。该模型是使用指定的模型顺序、延迟和估计选项创建的。
有关所使用的估计结果和选项的信息存储在报告
模型的属性。报告
具有以下字段。
报告字段 | 描述 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
状态 |
模型状态的总结,表明模型是通过构造创建的还是通过估计获得的。 |
||||||||||||||||||
方法 |
使用估计命令。 |
||||||||||||||||||
InitialState |
初始状态在估计过程中是如何处理的,作为以下值之一返回:
时,此字段特别有用 |
||||||||||||||||||
N4Weight |
N4SID算法用于奇异值分解的加权方案,返回为以下值之一:
时,此选项特别有用 |
||||||||||||||||||
N4Horizon |
N4SID算法使用的正向和反向预测范围,返回为具有三个元素的行向量- |
||||||||||||||||||
适合 |
估计的定量评估,作为结构返回。看到损失函数和模型质量度量有关这些质量度量的更多信息。该结构有以下字段:
|
||||||||||||||||||
参数 |
模型参数估计值。 |
||||||||||||||||||
OptionsUsed |
用于估计的选项集。如果没有配置自定义选项,则这是一组默认选项。看到 |
||||||||||||||||||
RandState |
估计开始时随机数流的状态。空的, |
||||||||||||||||||
DataUsed |
用于估计的数据的属性。结构,使用以下字段:
|
||||||||||||||||||
终止 |
用于预测误差最小化的迭代搜索的终止条件,作为具有以下字段的结构返回:
对于不需要数值搜索优化的估计方法,请使用 |
有关使用的更多信息报告
,请参阅评估报告.
x0
-估计过程中计算的初始状态
列向量|矩阵
算法
党卫军
使用非迭代子空间方法或迭代有理函数估计方法初始化参数估计。然后利用预测误差最小化方法对参数值进行优化。有关更多信息,请参见pem
和ssestOptions
.
参考文献
[1] Ljung, L。系统识别:用户的理论,第二版。上马鞍河,新泽西州:Prentice Hall PTR, 1999。
版本历史
在R2012a中引入MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。