您可以在命令行中以两种方式估算状态空间模型,具体取决于您的系统性质和您的要求的先验知识。
在此方法中,您可以指定模型顺序,以及可选地,配置状态空间矩阵的整体结构的其他模型结构属性。你打电话党卫军
那ssregest
或者n4sid
将数据和模型顺序作为主要输入参数,并使用名称-值对来指定任何附加属性,如模型样本时间、馈通的存在、无噪声成分等。你不需要直接计算系数一种那B.那C那D.那K.,X0矩阵。
在这种方法中,您将创建并配置IDS.
包含所有系统矩阵的初始值的模型。您使用结构
财产的财产IDS.
模型指定所有参数约束。例如,您可以将系统矩阵的某些系数指定为固定并强加对其他值上的最小/最大限制。为了快速配置参数化以及是否估计馈通和干扰动态,使用ssform.
。
配置后IDS.
具有所需约束的模型,您将此模型指定为输入参数党卫军
命令。你不能使用n4sid
或者ssregest
对于结构化的评估。
您可以使用迭代估计命令估计连续时间和离散时间的状态空间模型党卫军
这最小化了预测误差以获得最大似然值。
使用以下常规语法来配置和估算状态空间模型:
m = ssest(数据,n,opt,name,值)
在哪里数据
是估计数据,N
模型是定货的吗选择
包含配置状态空间模型估计的选项。这些选项包括处理初始条件,输入和输出偏移,估计焦点和搜索算法选项。OPT可以跟随名称 - 值对输入参数,用于指定可选的模型结构属性,例如馈通的存在,模型的规范形式,以及输入延迟。
作为替代品党卫军
,可以使用非迭代子空间估计器n4sid
或者ssregest
:
m = n4sid(data,n,opt,Name,Value) m = ssregest(data,n,opt,Name,Value)
除非您将采样时间指定为名称 - 值对输入参数,否则n4sid
和ssregest
估计离散时间模型,而党卫军
估计连续时间模型。
笔记
党卫军
用途n4sid
初始化状态空间矩阵,需要更长的时间n4sid
估计模型,但通常提供更好的数据。
有关验证模型的信息,请参见评估后验证模型
默认情况下,所有条目一种那B.,C将状态空间矩阵视为自由参数。使用形式
的名称-值对输入参数党卫军
,您可以选择使用较少参数的各种规范形式,如伴随形式和模态形式。
有关估计特定状态空间参数化的更多信息,请参阅:
为了估计状态空间模型,您可以选择在零和估计数据的零和估计数据之间切换模型采样时间。你可以使用这个TS.
名称值对输入参数。
默认情况下,党卫军
估计连续时间模型。如果您使用的是使用非零采样时间的数据集,数据
,其中包括所有时域数据,您也可以使用以下方式估计离散时间模型:
模型= SSEST(数据,NX,'ts', data.Ts);
如果使用的是连续时间频域数据,则无法估计离散时间模型。
默认情况下,n4sid
和ssregest
估计一个模型,其采样时间与数据的模型匹配。因此,对于时域数据,n4sid
和ssregest
提供一个离散时间模型。你可以使用以下方法来估计连续时间模型:
Model = N4SID(数据,NX,'ts', 0);
或者
= ssregest(数据、nx模型'ts', 0);
对于具有任何参数化的状态空间模型,您可以指定是否估计D.那K.和X0矩阵分别表示输入到输出馈通,噪声模型和初始状态。
对于具有结构化参数化的状态空间模型,您还可以指定来估计D.矩阵。但是,对于自由和规范形式,结构的结构D.矩阵是根据您选择的“引线”
名称值对输入参数。
默认情况下,D.矩阵不被估计,其值固定为零,除了静态模型。
黑盒估计:使用威胁
名称-值对输入参数,表示来自单个输入的馈通是否存在。例如,在双输入模型中,只有第二个输入有馈通,使用:
模型= N4SID(数据,n,“引线”,[误真实]);
结构估计:配置init_sys.structure.d.
,在那里init_sys
是一个IDS.
表示所需模型结构的模型。强制不给一世th输入,设置:
init_sys.structure.d.Value(:,i)= 0;init_sys.structure.d.free = true;init_sys.structure.d.free(:,i)= false;
第一行指定了值的值一世-tth d为零。下一行指定所有元素D.作为自由的、可估计的参数。最后一行指定一世的第i列D.矩阵是固定的估计。
另外,使用ssform.
与“引线”
名称-值对。
K.表示模型的噪声矩阵,使模型的噪声分量为:。
对于频域数据,估计没有噪声模型K.设置为0.对于时间域数据,K.在黑盒估计设置中默认是估计的。yN是扰动对模型输出的贡献。
黑盒估计:使用dispancemodel.
名称 - 值对输入参数指示干扰组件是否固定为零(指定value ='none'
)或估计为一个免费参数(指定值=“估计”
)。例如,使用:
模型= N4SID(数据,n,'diskancemodel'那“没有”);
结构估计:配置值init_sys.Structure.K
参数,其中init_sys
是一个IDS.
表示所需模型结构的模型。你可以修正一些K.矩阵系数到已知值并为自由系数规定最小/最大边界。例如,仅估计第一列K.矩阵为两输出模型:
kpar = init_sys.Structure.K;kpar.Free (: 1) = true;kpar.Free (:, 2) = false;kpar.Value (:, 2) = 0;%第二列值固定为零init_sys.structure.k = KPAR;
另外,使用ssform.
。
当不确定如何轻松固定或自由的所有系数K.,最初可以省略估计噪声参数K.着重于实现一个合理的系统动力学模型。估计完动态模型后,可以使用党卫军
配置时更好模型K.要释放的参数。例如:
init_sys = ssest(数据,n,'diskancemodel'那“没有”);init_sys.Structure.K。自由= true;sys = ss(数据、init_sys);
在哪里init_sys
是没有噪音的动态模型。
设置K.在现有模型中为零,您可以设置其价值
至0.
和自由
旗帜到假
:
m.Structure.K.Value = 0;m.Structure.K.Free = false;
初始状态矢量X0获得为模型估计的副产物。这n4sid
那党卫军
和ssregest
命令返回值X0作为它们的第二个输出参数。属性可以选择在模型估计期间如何处理初始条件InitialState
估算选项。用n4sidOptions
(为了n4sid
),ssestoptions.
(为了党卫军
)或ssregestOptions
(为了ssregest
)创建估计选项集。例如,为了在估计期间将初始状态保持为零。n4sid
:
选择= n4sidoptions;opt.initialstate =.'零';[m, X0] = n4sid(数据、n选择);
返回的X0
变量是长度的零矢量N
。
当您使用多分水管数据估计模型时,X0
矩阵包含与数据实验一样多的列。
有关的完整值列表initialstates.
选项,参见为迭代估计算法指定初始状态。