估计线性灰盒模型
指定线性灰盒模型结构
您可以使用单输出和多输出时域数据或时间序列数据(仅输出)估计任意常微分或差分方程的线性离散时间和连续时间灰盒模型。
你必须用状态空间的形式来表示你的方程组。状态空间模型使用状态变量x (t)用一组一阶微分方程来描述一个系统,而不是用一个或多个n阶微分方程。
灰盒建模的第一步是编写一个函数,该函数将状态空间矩阵作为用户定义的参数和关于模型的信息的函数返回。
使用以下格式在文件中实现线性灰盒模型:
[A, B, C, D] = myfunc (parN par1, par2,…,Ts, aux1, aux2,…)
输出参数是状态空间矩阵和myfunc
是文件的名称。par1 par2,…,parN
是N模型参数。每个条目可以是标量、向量或矩阵。Ts
是采样时间。aux1, aux2,…
可选输入参数是这样的吗myfunc
除了参数和采样时间外,还用于计算状态空间矩阵。辅助
包含系统中的辅助变量。您可以使用辅助变量来改变函数输入处的系统参数,并避免编辑文件。
你可以写的内容myfunc
将连续时间或离散时间状态空间模型参数化,或同时参数化。创建线性灰盒模型时使用myfunc
的输出参数的性质myfunc
.连续时间状态空间模型形式为:
在连续时间中,状态空间描述有以下形式:
在那里,一个,B,C而且D矩阵是由参数参数化的吗par1 par2,…,parN
.噪声矩阵K初始状态向量,x0,没有参数化myfunc
.在某些应用程序中,您可能想要表达K而且x0作为由所选参数参数化的量,就像一个,B,C而且D矩阵。要处理这种情况,可以编写ODE文件,myfunc
返回K而且x0作为附加输出参数:
[A, B, C, D, K, x0] = myfunc (par1 par2,..., Ts parN aux1 aux2,…)
par1 par2,…,parN
.要配置初始状态的处理,x0,扰动分量,K,在进行估计时,使用greyestOptions
选项设置。
在离散时间中,状态空间描述有类似的形式:
在那里,一个,B,C而且D离散时间矩阵是由参数化的吗par1 par2,…,parN
.K而且x0没有直接参数化,但是如果需要,可以通过配置相应的估计选项进行估计。
在用模型结构创建函数或mex文件之后,您必须定义一个idgrey
模型对象。
创建函数来表示灰盒模型
这个例子展示了如何表示以下连续时间模型的结构:
这个方程表示电机,其中是电机轴的角度位置,和是角速度。的参数电机的逆时间常数,和是从输入到角速度的静态增益。
马达在八点钟停止运转t
= 0,但它的角位置是未知的。设未知参数的近似标称值为,而且.有关此示例的更多信息,请参见中的状态空间模型一节系统识别:用户的理论,第二版,Lennart Ljung, Prentice Hall PTR, 1999年。
连续时间状态空间模型结构由下式定义:
如果您想使用结构化的状态空间表示来估计相同的模型,请参见结构化连续时间状态空间模型的估计.
为了准备这个模型进行估计:
创建以下文件来表示本例中的模型结构:
函数[A,B,C,D,K,x0] = myfunc(par,T) A = [0 1;0(1)]相当;B =(0;(2)持平);C =眼(2);D = 0 (2, 1);K = 0 (2, 2);x0 =((3)相当;0);
保存文件,使其在MATLAB®搜索路径中。
使用以下语法定义
idgrey
的模型对象myfunc
文件:
票面价值= [1;0.25;0);辅助= {};T = 0;m = idgrey (“myfunc”票面价值,“c”、辅助T);
在哪里票面价值
表示所有用户定义参数的向量,并包含它们的标称(初始)值。在本例中,所有标量值的参数都被分组在票面价值
向量。标量值的参数也可以被视为ODE函数的独立输入参数myfunc
.“c”
指定基础参数化是连续时间的。辅助
代表可选参数。作为myfunc
没有任何可选参数,使用辅助= {}
.T
指定采样时间;T = 0
指示连续时间模型。
加载估计数据。
负载(fullfile (matlabroot“工具箱”,“识别”,“iddemos”,“数据”,“dcmotordata”));data = iddata (y、u, 0.1);
使用感动的
估计灰盒参数值:
m_est =老龄化最严重的(数据);
在哪里数据
是估计数据和米
是一个估计初始化idgrey
模型。m_est
是估计的idgrey
模型。