用结构化参数化估计状态空间模型
什么是结构化参数化?
结构参数化允许您通过将这些参数设置为特定值来排除估算中的特定参数。当您可以从物理原理导出状态空间矩阵并根据物理洞察力提供初始参数值时,这种方法非常有用。您可以使用这种方法来发现修复特定参数值或释放某些参数时会发生什么。
结构化评估过程分为两个阶段:
指定状态空间模型结构,如中所述指定状态空间模型结构
估计自由模型参数,如中所述在命令行上估计状态空间模型
这种方法不同于具有自由和规范参数化的估计模型,在这些模型中,在估计之前不需要指定初始参数值。对于自由参数化,不需要指定结构,因为假定它是未知的。对于规范参数化,结构固定为特定的形式。
请注意
要在系统识别应用程序中估计结构化的状态空间模型,请在命令行中定义相应的模型结构并将其导入系统识别应用程序。
指定状态空间模型结构
要指定状态空间模型结构:
使用
中的难点
创建一个状态空间模型。例如:A = [0 1;0 1];B = [0;0.28);C =眼睛(2);D = 0 (2,1);m = idss(A,B,C,D,K,“t”, T)
创建一个离散时间状态空间结构,其中
一个
,B
,C
,D
,K
指定自由参数的初始值。T
是采样时间。使用
结构
属性,以指定要估计哪些参数以及将哪些参数设置为特定值。例如,如果你想修复
(1、2)= (2,1)= 0
使用:m.Structure.A.Value(1,2) = 0;m.Structure.A.Value(2,1) = 0;m. a . free (1,2) = false;m. a . free (2,1) = false;
估计算法只对参数进行估计
一个
的m.Structure.A.Free
是真正的
.尽可能使用物理洞察力来初始化迭代搜索算法的参数。因为数值最小值可能会陷入局部最小值,所以可以为参数尝试几个不同的初始化值。对于随机初始化,使用
初始化
.当模型结构包含不同数量级的参数时,尝试缩放变量,使所有参数的数量级大致相同。或者,要快速配置参数化以及是否估计馈通和扰动动态,请使用
ssform
.使用
党卫军
要估计模型,如在命令行上估计状态空间模型.
迭代搜索计算的梯度预测误差与参数使用数值微分。步长由nuderst
命令。默认步长为104乘以一个参数的绝对值或等于107,以较大者为准。要指定不同的步长,请编辑nuderst
MATLAB®文件。
灰盒模型与结构参数化的状态空间模型相似吗?
你估计具有结构化参数化的状态空间模型当你知道一个线性系统的一些参数并需要估计其他参数时。因此,这些模型类似于灰盒模型。然而,在这个工具箱中,“灰盒建模”术语仅在引用时使用idgrey
而且idnlgrey
模型。在这些模型中,您可以指定具有未知参数之间复杂关系的完整线性或非线性模型。
如果在线性状态空间模型结构中有独立的未知矩阵元素,那么使用带有结构化参数化的状态空间模型会更容易、更快。要施加依赖项或使用更复杂的参数化形式,请使用idgrey
模型和相关的感动的
估计量。有关更多信息,请参见灰盒模型估计.
如果您想将关于状态和输出协方差的先验知识合并到估计过程中,请使用idgrey
使用通用状态空间模型结构来识别系统。有关更多信息,请参见识别具有分离过程和测量噪声描述的状态空间模型.
估计结构化离散时间状态空间模型
这个例子展示了如何估计离散时间模型的未知参数。
在这个例子中,你估计 在下面的离散时间模型中:
假设未知参数的标称值(
)-1
,2
,3.
,4
,5
,分别。
离散时间状态空间模型结构定义为:
构造参数矩阵并使用标称参数值初始化参数值。
A = [1,-1;0,1];B = [2;3];C = [1,0];D = 0;K = [4;5];
构造状态空间模型对象。
m = idss(A,B,C,D,K);
在结构矩阵中指定不想估计的参数值。
S = m.结构;S.A.Free(1,1) = false;S.A.Free(2,:) = false;c . free = false;m.结构= S;
D
默认情况下,初始化为固定值,和K
而且B
初始化为自由值。假设您希望将初始状态固定为已知的零值。要执行此操作,请配置InitialState
估计的选择。
opt = ssestOptions;opt.InitialState =“零”;
负载估计数据。
负载iddata1z1;
估计模型结构。
M = sest(z1, M,opt);
在哪里z1
的名称。iddata
对象。数据可以是时域数据,也可以是频域数据。中的标称值开始迭代搜索一个
,B
,C,
D
,K
矩阵。
估计结构化连续时间状态空间模型
这个例子展示了如何估计一个连续时间模型的未知参数。
在这个例子中,你估计 在以下连续时间模型中:
这个方程表示一个电动机,其中 是电机轴的角度位置,和 是角速度。的参数 是电机的逆时间常数,和 是从输入到角速度的静态增益。
马达在七点静止t = 0
而是它的角位置
是未知的。假设未知参数的近似标称值为
而且
.
位置测量误差方差为0.01
,角速度测量的方差为0.1
.有关此示例的更多信息,请参阅中的状态空间模型一节系统识别:用户的理论,第二版,Lennart Ljung著,Prentice Hall PTR, 1999。
连续时间状态空间模型结构定义为:
构造参数矩阵并使用标称参数值初始化参数值。
A = [0 1;0 -1];B = [0;0.25];C =眼睛(2);D = [0;0];K = 0 (2,2);X0 = [0;0];
矩阵对应于连续时间表示法。但是,要与之一致中的难点
对象属性名,本例使用一个
,B
,C
而不是F
,G
,H
.
构造连续时间状态空间模型对象。
m = idss(A,B,C,D,K,“t”, 0);
在结构矩阵中指定不想估计的参数值。
S = m.结构;S.A.Free(1,:) = false;S.A.Free(2,1) = false;s.b.b free (1) = false;c . free = false;免费= false;免费=假;m.结构= S;m.NoiseVariance = [0.01 0;0 0.1);
初始状态部分未知。使用InitialState
选项ssestOptions
的估计行为X0
.
opt = ssestOptions;opt.InitialState = idpar(x0);opt.InitialState.Free(2) = false;
估计模型结构。
负载(fullfile (matlabroot“工具箱”,“识别”,“iddemos”,“数据”,“dcmotordata”));Z = iddata(y,u,0.1);M = sest(z, M,opt);
最小值的迭代搜索由标称模型中的参数初始化米
.连续时间模型使用与估计过程中数据相同的采样时间进行采样。
用采样时间模拟该系统T = 0.1
输入u
以及噪声实现e
.
E = randn(300,2);U1 = idinput(300);Simdat = iddata([],u1,“t”, 0.1);simopt = simOptions(“AddNoise”,真的,“NoiseData”, e);Y1 = sim(m,simdat,simopt);
连续系统采用t = 0.1
用于模拟目的。噪声序列根据矩阵进行缩放m.NoiseVariance
.
如果你发现电机最初不是静止的,你可以估计
的第二个元素InitialState
参数为空闲。
opt.InitialState.Free(2) = true;M_new = ssest(z,m,opt);