主要内容

在命令行估计状态空间模型

黑盒与结构化状态空间模型估计

在命令行中,您可以通过两种方式估计状态空间模型,这取决于您之前对系统性质和需求的了解。

黑盒估计

在这种方法中,您可以指定模型顺序,以及(可选的)配置状态空间矩阵总体结构的附加模型结构属性。你叫党卫军ssregestn4sid将数据和模型顺序作为主要输入参数,并使用名称-值对指定任何附加属性,如模型样本时间、是否存在馈通、是否存在噪声组件等。你不直接处理系数一个BCDK,X0矩阵。

结构化的评估

在这种方法中,您将创建并配置一个中的难点模型,其中包含所有系统矩阵的初值。您使用结构财产的中的难点模型以指定所有参数约束。例如,您可以指定系统矩阵的某些系数为固定的,并对其他系数的值施加最小/最大界限。对于参数化的快速配置和是否估计馈通和扰动动力学,使用ssform

配置后中的难点的输入参数,则指定此模型为党卫军命令。你不能使用n4sidssregest对于结构化的评估。

请注意

  • 结构化估计方法也被称为灰盒建模。然而,在这个工具箱中,“灰盒建模”术语仅在引用时使用idgreyidnlgrey模型。

  • 使用结构化估计方法,您不能指定状态空间系数之间的关系。每个系数本质上被认为是独立于其他系数的。要强加依赖,或者使用更复杂的参数化形式,请使用idgrey模型和感动的估计量。

使用ssest, ssregest和n4sid估计状态空间模型

先决条件

您可以使用迭代估计命令估计连续时间和离散时间状态空间模型党卫军使预测误差最小化以获得最大似然值。

使用以下通用语法来配置和估计状态空间模型:

m = ss(数据、n、选择、名称、值)

在哪里数据为估计数据,n模型顺序是,和选择包含配置状态空间模型估计的选项。这些选项包括初始条件的处理、输入和输出偏移量、估计焦点和搜索算法选项。Opt后面可以跟着名称-值对输入参数,这些参数指定可选的模型结构属性,例如是否存在馈通、模型的规范形式和输入延迟。

作为替代党卫军,你可以使用非迭代子空间估计n4sidssregest

m = n4sid(data,n,opt,Name,Value)

除非您将示例时间指定为名称-值对输入参数,n4sidssregest估计一个离散时间模型,而党卫军估计一个连续时间模型。

请注意

党卫军使用n4sid初始化状态空间矩阵,所需时间大于n4sid对模型进行估计,但通常会提供更好的数据拟合。

有关验证模型的信息,请参见评估后的模型验证

A, B, C矩阵结构的选择

缺省情况下,接口的所有表项一个B,C将状态空间矩阵视为自由参数。使用形式的名称-值对输入参数党卫军,您可以选择使用较少参数的各种规范形式,如伴随形式和模态形式。

有关估计特定状态空间参数化的更多信息,请参见:

在连续时间和离散时间表示之间的选择

对于状态空间模型的估计,您可以选择在零和估计数据的样本时间之间切换模型样本时间。你可以用Ts名称-值对输入参数。

  • 默认情况下,党卫军估计一个连续时间模型。如果你使用非零采样时间的数据集,数据,其中包括所有的时域数据,你也可以通过以下方法估计一个离散时间模型:

    = ss(数据、nx模型“t”, data.Ts);

    如果您使用的是连续时间频域数据,则无法估计离散时间模型。

  • 默认情况下,n4sidssregest估计一个样本时间与数据相符的模型。因此,对于时域数据,n4sidssregest交付一个离散时间模型。你可以使用以下方法来估计一个连续时间模型:

    = n4sid(数据、nx模型“t”, 0);

    = ssregest(数据、nx模型“t”, 0);

选择估计D, K和X0矩阵

对于具有任何参数化的状态空间模型,您可以指定是否估计DKX0矩阵,分别表示输入到输出的馈通、噪声模型和初始状态。

对于具有结构化参数化的状态空间模型,您还可以指定以估计D矩阵。但是,对于自由格式和规范格式,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表示模型的噪声矩阵,即模型的噪声分量为:。

x ˙ 一个 x + K e y n C x + e

对于频域数据,无噪声模型估计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矩阵

初始状态向量X0是模型估计的副产品。的n4sid党卫军ssregest命令返回值X0作为它们的第二个输出参数。在模型估计期间,您可以选择如何处理初始条件InitialState估计的选择。使用n4sidOptions(n4sid),ssestOptions(党卫军)或ssregestOptions(ssregest)来创建评估选项集。例如,为了保持初始状态为零的估计使用n4sid

选择= n4sidOptions;opt.InitialState =“零”;[m, X0] = n4sid(数据、n选择);

返回的X0变量是一个长度为零的向量n

当你使用多实验数据估计模型时X0矩阵包含与数据实验一样多的列。

的值的完整列表InitialStates选项,看到为迭代估计算法指定初始状态

相关的话题