在命令行中,您可以通过两种方式估计状态空间模型,这取决于您之前对系统性质和需求的了解。
在这种方法中,您可以指定模型顺序,以及(可选的)配置状态空间矩阵总体结构的附加模型结构属性。你叫党卫军
,ssregest
或n4sid
将数据和模型顺序作为主要输入参数,并使用名称-值对指定任何附加属性,如模型样本时间、是否存在馈通、是否存在噪声组件等。你不直接处理系数一个,B,C,D,K,X0矩阵。
在这种方法中,您将创建并配置一个中的难点
模型,其中包含所有系统矩阵的初值。您使用结构
财产的中的难点
模型以指定所有参数约束。例如,您可以指定系统矩阵的某些系数为固定的,并对其他系数的值施加最小/最大界限。对于参数化的快速配置和是否估计馈通和扰动动力学,使用ssform
.
您可以使用迭代估计命令估计连续时间和离散时间状态空间模型党卫军
使预测误差最小化以获得最大似然值。
使用以下通用语法来配置和估计状态空间模型:
m = ss(数据、n、选择、名称、值)
在哪里数据
为估计数据,n
模型顺序是,和选择
包含配置状态空间模型估计的选项。这些选项包括初始条件的处理、输入和输出偏移量、估计焦点和搜索算法选项。Opt后面可以跟着名称-值对输入参数,这些参数指定可选的模型结构属性,例如是否存在馈通、模型的规范形式和输入延迟。
作为替代党卫军
,你可以使用非迭代子空间估计n4sid
或ssregest
:
m = n4sid(data,n,opt,Name,Value)
除非您将示例时间指定为名称-值对输入参数,n4sid
和ssregest
估计一个离散时间模型,而党卫军
估计一个连续时间模型。
请注意
党卫军
使用n4sid
初始化状态空间矩阵,所需时间大于n4sid
对模型进行估计,但通常会提供更好的数据拟合。
有关验证模型的信息,请参见评估后的模型验证
缺省情况下,接口的所有表项一个,B,C将状态空间矩阵视为自由参数。使用形式
的名称-值对输入参数党卫军
,您可以选择使用较少参数的各种规范形式,如伴随形式和模态形式。
有关估计特定状态空间参数化的更多信息,请参见:
对于状态空间模型的估计,您可以选择在零和估计数据的样本时间之间切换模型样本时间。你可以用Ts
名称-值对输入参数。
默认情况下,党卫军
估计一个连续时间模型。如果你使用非零采样时间的数据集,数据
,其中包括所有的时域数据,你也可以通过以下方法估计一个离散时间模型:
= ss(数据、nx模型“t”, data.Ts);
如果您使用的是连续时间频域数据,则无法估计离散时间模型。
默认情况下,n4sid
和ssregest
估计一个样本时间与数据相符的模型。因此,对于时域数据,n4sid
和ssregest
交付一个离散时间模型。你可以使用以下方法来估计一个连续时间模型:
= n4sid(数据、nx模型“t”, 0);
或
= ssregest(数据、nx模型“t”, 0);
对于具有任何参数化的状态空间模型,您可以指定是否估计D,K和X0矩阵,分别表示输入到输出的馈通、噪声模型和初始状态。
对于具有结构化参数化的状态空间模型,您还可以指定以估计D矩阵。但是,对于自由格式和规范格式,D矩阵是根据你的选择设定的“引线”
名称-值对输入参数。
默认情况下,D矩阵不被估计,它的值固定为零,除了静态模型。
黑盒估计:使用直通的
名称-值对输入参数,用于表示来自各个输入的馈通是否存在。例如,在两个输入模型的情况下,只有来自第二个输入的馈通,使用:
模型= n4sid(数据、n、“引线”,虚假的真实);
结构化的评估:配置的值init_sys.Structure.D
,在那里init_sys
是一个中的难点
表示所需模型结构的模型。强制无馈通我th输入,设置:
init_sys.Structure.D.Value (:, i) = 0;init_sys.Structure.D。自由= true;init_sys.Structure.D.Free (:, i) = false;
的值我D的第n列为0。下一行指定的所有元素D作为自由的,可估计的参数。最后一行指定我的第th列D矩阵是固定的,便于估计。
另外,使用ssform
与“引线”
名称-值对。
K表示模型的噪声矩阵,即模型的噪声分量为:。
对于频域数据,无噪声模型估计K设置为0。对于时域数据,K在黑箱估计设置中默认估计。yn为扰动对模型输出的贡献。
黑盒估计:使用DisturbanceModel
名称-值对输入参数,指示扰动分量是否固定为零(指定值= '没有'
)或估计为自由参数(指定值=“估计”
).例如,使用:
模型= n4sid(数据、n、“DisturbanceModel”,“没有”);
结构化的评估:配置的值init_sys.Structure.K
参数,init_sys
是一个中的难点
表示所需模型结构的模型。你可以修正一些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 = sest(data, n,“DisturbanceModel”,“没有”);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
选项,看到为迭代估计算法指定初始状态.