主要内容

用结构化参数化估计状态空间模型

什么是结构化参数化?

结构参数化允许您通过将这些参数设置为特定值来从估计中排除特定参数。当您可以从物理原理导出状态空间矩阵并根据物理洞察力提供初始参数值时,此方法非常有用。您可以使用这种方法来发现修复特定参数值或释放特定参数时会发生什么。

结构化估算程序有两个阶段:

  1. 指定状态空间模型结构,如指定状态空间模型结构

  2. 估计自由模型参数,如在命令行估计状态空间模型

这种方法不同于自由和规范参数化的估计模型,在自由和规范参数化模型中,不需要在估计之前指定初始参数值。对于自由参数化,不需要指定结构,因为假定它是未知的。对于规范参数化,结构固定为特定形式。

请注意

要估算系统标识应用程序中的结构化状态空间模型,请在命令行处定义相应的模型结构,并将其导入系统标识应用程序。

指定状态空间模型结构

指定状态空间模型结构:

  1. 使用中的难点创建状态空间模型。例如:

    A = [0 1;0 1];B = [0;0.28);C =眼(2);D = 0 (2, 1);m = ids (A, B, C, D, K,'ts',t)

    创建一个离散时间状态空间结构,其中一个BCD,K指定自由参数的初始值。T为采样时间。

  2. 使用结构属性,以指定要估计哪些参数,以及将哪些参数设置为特定值。

    更多关于结构

    例如,如果你想修复(1、2)= (2,1)= 0使用:

    m.Structure.A.Value(1、2)= 0;m.Structure.A.Value (2, 1) = 0;m.Structure.A.Free(1、2)= false;m.Structure.A.Free (2, 1) = false;

    估计算法只对中的参数进行估计一个m.Structure.A.Free真正的

    尽可能使用物理洞察力来初始化迭代搜索算法的参数。因为数值最小化可能会陷入局部最小值,所以请尝试几个不同的参数初始化值。对于随机初始化,请使用初始化.当模型结构包含具有不同数量级的参数时,尝试缩放变量,使参数大致相同。

    或者,为了快速配置参数化以及是否估计馈通和干扰动态,使用ssform

  3. 使用党卫军来估计模型,如在命令行估计状态空间模型

迭代搜索使用数值微分来计算预测误差相对于参数的梯度。的步长指定nuderst命令。默认步长等于104乘以一个参数的绝对值或等于107,以较大者为准。要指定不同的步长,请编辑nuderstMATLAB®文件。

灰箱模型与具有结构化参数化的状态空间模型相似吗?

你估计具有结构化参数化的状态空间模型当你知道一个线性系统的一些参数并且需要估计其他的。因此,这些模型类似于灰盒模型。然而,在这个工具箱中,“灰盒建模”术语仅在引用时使用idgreyidnlgrey楷模。在这些模型中,您可以在未知参数之间指定具有复杂关系的完整线性或非线性模型。

如果在线性状态空间模型结构中有独立的未知矩阵元素,那么使用具有结构化参数化的状态空间模型会更容易、更快。要强加依赖,或者使用更复杂的参数化形式,请使用idgrey模型及相关感动的估计量。有关更多信息,请参见灰色矩形模型估计

如果您想将关于状态和输出协方差的先验知识合并到估计过程中,请使用idgrey模型使用一般状态空间模型结构识别您的系统。有关更多信息,请参见识别具有独立过程和测量噪声描述的状态空间模型

估计结构化离散时间状态空间模型

这个例子展示了如何估计离散时间模型的未知参数。

在这个例子中,你估计 θ. 1 θ. 2 θ. 3. θ. 4 θ. 5 在以下离散时间模型中:

x t + 1 1 θ. 1 0 1 x t + θ. 2 θ. 3. u t + θ. 4 θ. 5 e t y t 1 0 x t + e t x 0 0 0

设未知参数的标称值( θ. 1 θ. 2 θ. 3. θ. 4 θ. 5 ) 是-123.4,5,分别。

离散时间状态空间模型结构定义为:

x k T + T 一个 x k T + B u k T + K e k T y k T C x k T + D u k T + e k T x 0 x 0

构造参数矩阵并使用标称参数值初始化参数值。

= (1, - 1, 0, 1];B =(2、3);C = (1,0);D = 0;K =(4、5);

构建状态空间模型对象。

m = IDS(A,B,C,D,K);

在结构矩阵中指定您不想估计的参数值。

S = m.Structure;S.A.Free (1, - 1) = false;: S.A.Free (2) = false;S.C.Free = false;m.Structure = S;

D默认情况下,初始化为固定值,并且KB初始化为自由值。假设您想将初始状态固定为已知的零值。要强制执行此操作,请配置Initimstate.估计的选择。

选择= ssestOptions;opt.InitialState ='零'

负荷估算数据。

负载Iddata1.z1

评估模型结构。

m = ss (z1, m,选择);

在哪里z1iddata.目的。数据可以是时域或频域数据。迭代搜索以标称值开头一个BC,D,K矩阵。

估计结构化连续时间状态空间模型

此示例显示如何估计连续时间模型的未知参数。

在这个例子中,你估计 θ. 1 θ. 2 θ. 3. 在以下连续时间模型中:

x ˙ t 0 1 0 θ. 1 x t + 0 θ. 2 u t y t 1 0 0 1 x t + e t x 0 θ. 3. 0

这个方程表示一个电动机,其中 y 1 t x 1 t 是电机轴的角度位置,以及 y 2 t x 2 t 是角速度。的参数 - θ. 1 电机的逆时间常数,和 θ. 2 / θ. 1 是角速度输入的静态增益。

电机休息t = 0,但它的角度位置 θ. 3. 是未知的。设未知参数的近似标称值为 θ. 1 - 1 θ. 2 0 2 5

位置测量误差的方差为0.01,角速度测量的方差为0.1.有关此示例的更多信息,请参阅中关于状态空间模型的部分系统识别:用户的理论,第二版,Lennart Ljung, Prentice Hall PTR, 1999。

连续时间 - 空间模型结构由以下等式定义:

x ˙ t F x t + G u t + K w t y t H x t + D u t + w t x 0 x 0

构造参数矩阵并使用标称参数值初始化参数值。

A = [0 1;0 -1];B = [0, 0.25);C =眼(2);D = (0, 0);K = 0 (2, 2);x0 = (0, 0);

这些矩阵对应于连续时间表示。然而,要与中的难点object属性名称,此示例使用一个B,C而不是FG,H

构建连续时间状态空间模型对象。

m = ids (A, B, C, D, K,'ts', 0);

在结构矩阵中指定您不想估计的参数值。

S = m.Structure;S.A.Free (1:) = false;S.A.Free (2, 1) = false;S.B.Free (1) = false;S.C.Free = false;S.D.Free = false;S.K.Free = false;m.Structure = S;m.噪声方差= [0.01 0;0 0.1);

初始状态是部分未知的。使用Initimstate.选择的ssestOptions选项集来配置的估计行为X0

选择= ssestOptions;opt.initialstate = idpar(x0);opt.initialstate.free(2)= false;

评估模型结构。

加载(全氟(MatlaBroot,“工具箱”“识别”“iddemos”“数据”'dcmotordata'));z = iddata (y、u, 0.1);m = ss (z, m,选择);

迭代搜索最小值是由标称模型中的参数初始化的.连续时间模型采用与估计时数据相同的采样时间进行采样。

使用采样时间模拟此系统T = 0.1输入u噪声的实现e

e = randn(300,2);U1 = id inInput(300);simdat = Iddata([],U1,'ts', 0.1);simopt = simOptions (“AddNoise”,真的,'noosdata', e);日元= sim (m, simdat, simopt);

连续系统的采样使用t = 0.1模拟的目的。噪声序列根据矩阵进行缩放m.NoiseVariance

如果你发现电机一开始不是静止的,你可以估计 x 2 0 的第二个元素Initimstate.参数为自由。

opt.InitialState.Free (2) = true;m_new = ss (z, m,选择);