主要内容

估计线性灰盒模型

指定线性灰盒模型结构

您可以使用单输出和多输出时域数据或时间序列数据(仅输出)估计任意常微分方程或差分方程的线性离散时间和连续时间灰盒模型。

你必须用状态空间的形式来表示你的系统方程。状态空间模型使用状态变量x (t)用一阶微分方程来描述一个系统,而不是用一个或多个n阶微分方程。

灰盒建模的第一步是编写一个函数,将状态空间矩阵作为用户定义的参数和关于模型的信息的函数返回。

使用以下格式在文件中实现线性灰盒模型:

[A, B, C, D] = myfunc (parN par1, par2,…,Ts, aux1, aux2,…)

输出参数是状态空间矩阵和myfunc是文件的名称。par1 par2,…,parNN模型参数。每个条目可以是一个标量、向量或矩阵。Ts是采样时间。aux1, aux2,…可选输入参数是这样的吗myfunc除参数和采样时间外,还用于计算状态空间矩阵。辅助包含系统中的辅助变量。您可以使用辅助变量来改变函数输入处的系统参数,并避免编辑文件。

你可以写的内容myfunc将连续时间或离散时间状态空间模型参数化,或同时参数化。创建线性灰盒模型时使用myfunc的输出参数的性质myfunc.连续时间状态空间模型的形式为:

在连续时间中,状态空间的描述形式如下:

x ˙ t 一个 x t + B u t + K e t y t C x t + D u t + e t x 0 x 0

在那里,一个BC而且D矩阵是由参数参数化的吗par1 par2,…,parN.噪声矩阵K初始状态向量,x0的参数myfunc.在某些应用程序中,您可能想要表达K而且x0作为由选定参数参数化的量,就像一个BC而且D矩阵。要处理这种情况,您可以编写ODE文件,myfunc,返回K而且x0作为额外的输出参数:

[A,B,C,D,K,x0] = myfunc(par1,par2,..., Ts parN aux1 aux2,…)
K而且x0因此,与一个BC而且D矩阵。它们都是参数的函数par1 par2,…,parN.要配置初始状态的处理,x0,为扰动分量,K,在估计时,使用greyestOptions选项设置。

在离散时间中,状态空间描述有类似的形式:

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

在那里,一个BC而且D现在离散时间矩阵是由参数参数化的吗par1 par2,…,parNK而且x0不是直接参数化的,但是如果需要,可以通过配置相应的估计选项进行估计。

在使用模型结构创建函数或mexo文件之后,必须定义一个idgrey模型对象。

创建表示灰盒模型的函数

这个例子展示了如何表示以下连续时间模型的结构:

数组$ $ \开始{}{1}& # xA;左\点x (t) = \[{\开始数组{}{* {20}{c}} & # xA; 0 & # 38; 1 \ \ & # xA; 0 &{{\θ_1}}& # xA;结束\{数组}}\右)x (t) +左\[{\开始数组{}{* {20}{c}} & # xA; 0 \ \ & # xA;{{\θ_2}}& # xA;结束\{数组}}\右]u (t) \ \ & # xA;左y (t) = \[{\开始数组{}{* {20}{c}} & # xA; 1 & # 38; 0 \ \ & # xA; 0 & # 38; 1 & # xA;结束\{数组}}\右)x (t) + e (t) \ \ & # xA;左x(0) = \[{\开始数组{}{* {20}{c}} & # xA;{{\θ_3}}\ \ & # xA; 0 & # xA;结束\{数组}}\右]& # xA; \{数组}$ $

这个方程表示一个电动机,其中${y_1}(t) = {x_1}(t)$是电机轴的角度位置,和${y_2}(t) = {x_2}(t)$是角速度。的参数$- {\theta _1}$是电机的逆时间常数,和$- {{\theta _2}}/{{\theta _1}}$是从输入到角速度的静态增益。

马达在七点静止t= 0,但它的角位置${\θ_3}$是未知的。假设未知参数的近似标称值为${\theta _1} = - 1$${\theta _2} = 0.25$而且${\theta _3} = 0$.有关此示例的更多信息,请参阅中的状态空间模型一节系统识别:用户的理论,第二版,Lennart Ljung著,Prentice Hall PTR, 1999。

连续时间状态空间模型结构定义为:

数组$ $ \开始{}{1}& # xA; \点x (t) =外汇(t) +顾(t) + \波浪号千瓦(t) \ \ & # xA; y (t) = Hx (t) + Du (t) + w (t) \ \ & # xA; x (0) = x0 # xA; \{数组}$ $

如果您想使用结构化的状态空间表示来估计相同的模型,请参见估计结构化连续时间状态空间模型

准备这个模型进行估计:

  • 创建以下文件来表示本例中的模型结构:

函数[A,B,C,D,K,x0] = myfunc(par,T) A = [0 1;0(1)]相当;B = [0;par(2)];C =眼睛(2);D = 0 (2,1);K = 0 (2,2);X0 = [par(3);0];

保存文件,使其位于MATLAB®搜索路径中。

  • 使用以下语法定义idgrey对象的模型myfunc文件:

Par = [-1;0.25;0);Aux = {};T = 0;M = idgrey(“myfunc”票面价值,“c”、辅助T);

在哪里票面价值表示所有用户定义参数的向量,并包含它们的标称(初始)值。在本例中,所有标量值参数都分组在票面价值向量。标量值参数也可以被视为ODE函数的独立输入参数myfunc“c”指定基础参数化是连续时间的。辅助表示可选参数。作为myfunc没有任何可选参数,使用Aux = {}T指定采样时间;T = 0表示连续时间模型。

加载估计数据。

负载(fullfile (matlabroot“工具箱”“识别”“iddemos”“数据”“dcmotordata”));数据= iddata(y,u,0.1);

使用感动的估算灰盒参数值:

M_est =灰色(数据,m);

在哪里数据估计数据和是估算初始化idgrey模型。m_est是估计的idgrey模型。

另请参阅

|

相关的话题