主要内容gydF4y2Ba

idgreygydF4y2Ba

具有可识别参数的线性ODE(灰盒模型)gydF4y2Ba

描述gydF4y2Ba

一个gydF4y2BaidgreygydF4y2Ba模型将线性系统表示为具有可识别(可估计)系数的连续时间或离散时间状态空间模型。使用一个gydF4y2BaidgreygydF4y2Ba当您希望捕获结构化状态空间的复杂关系、约束和先验知识(gydF4y2Ba中的难点gydF4y2Ba)模型不能封装。要创建gydF4y2BaidgreygydF4y2Ba模型,你必须清楚地知道控制系统动力学的方程组(常微分方程或差分方程)。gydF4y2Ba

一个gydF4y2BaidgreygydF4y2Ba模型允许您合并以下条件:gydF4y2Ba

  • 参数约束gydF4y2Ba中的难点gydF4y2Ba/gydF4y2Ba党卫军gydF4y2Ba框架不能处理诸如参数的线性或相等约束,或关于状态、输入、输出或三者的任何组合的方差的先验知识,而这些都是您想包含的已知信息gydF4y2Ba

  • 一种任意形式的线性模型,如传递函数或多项式模型,具有参数约束,如已知直流增益、极点位置限制、多个输入的共享分母或MIMO模型中的非零输入/输出延迟gydF4y2Ba

  • 已知和未知系数的微分或差分方程gydF4y2Ba

在这些和类似的情况下,您可以在MATLAB中创建一个ODE(常微分或差分方程)函数gydF4y2Ba®gydF4y2Ba它实现了线性模型的状态空间实现,并指定了约束和先验知识。gydF4y2Ba

创建ODE的简单示例gydF4y2BaidgreygydF4y2Ba用下面的方程来描述电机动力学。gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba [gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba τgydF4y2Ba ]gydF4y2Ba xgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba [gydF4y2Ba 0gydF4y2Ba GgydF4y2Ba τgydF4y2Ba ]gydF4y2Ba ugydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ygydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba [gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba ]gydF4y2Ba xgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

在这些方程中,gydF4y2BaτgydF4y2Ba单个可估计参数是和吗gydF4y2BaGgydF4y2Ba表示已知的静态增益。gydF4y2Ba

这些方程符合状态空间形式:gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 一个gydF4y2Ba xgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba BgydF4y2Ba ugydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ygydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba CgydF4y2Ba xgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

在这种情况下,两个gydF4y2Ba一个gydF4y2Ba而且gydF4y2BaBgydF4y2Ba矩阵包含可估计参数gydF4y2BaτgydF4y2Ba,gydF4y2BaBgydF4y2Ba也包括已知的增益gydF4y2BaGgydF4y2Ba.你可以写一个接受的MATLAB函数gydF4y2BaτgydF4y2Ba而且gydF4y2BaGgydF4y2Ba作为输入参数并返回状态空间矩阵gydF4y2Ba一个gydF4y2Ba,gydF4y2BaBgydF4y2Ba,gydF4y2BaCgydF4y2Ba作为输出参数。例如,您可以编写一个函数gydF4y2BamotorFcngydF4y2Ba如下。gydF4y2Ba

函数gydF4y2Ba[A,B,C] = motorFcn(tau,G)gydF4y2BaODE函数,用于作为参数函数计算状态空间矩阵gydF4y2BaA = [0 1;0 1 /τ);B = [0;G /τ];C =眼睛(2);gydF4y2Ba

在创建函数后,如gydF4y2BamotorFcngydF4y2Ba,创建gydF4y2BaidgreygydF4y2Ba通过将该函数指定为其值来建模gydF4y2BaodefungydF4y2Ba输入参数,如下面的命令所示。gydF4y2Ba

sys = idgrey(@motorFcn,tau0,gydF4y2Ba“c”gydF4y2Ba, G)gydF4y2Ba
在这里,gydF4y2Batau0gydF4y2Ba是参数的初始猜测吗gydF4y2BaτgydF4y2Ba而且gydF4y2BaGgydF4y2Ba指定固定常数。此外,gydF4y2Ba“c”gydF4y2Ba指示gydF4y2BaidgreygydF4y2Ba那gydF4y2BaodefungydF4y2Ba返回与连续时间系统对应的矩阵。有关更多信息,请参见gydF4y2Bafunction_typegydF4y2Ba.gydF4y2Ba

创建对象的可执行示例gydF4y2BaidgreygydF4y2Ba从这些电机动力学方程建立模型,见gydF4y2Ba建立参数可估计的灰盒模型gydF4y2Ba.gydF4y2Ba

更一般地,下面的方程描述了连续时间和离散时间系统的状态空间形式。gydF4y2Ba

一个带有输入向量的系统的状态空间模型gydF4y2BaugydF4y2Ba,输出矢量gydF4y2BaygydF4y2Ba,和扰动gydF4y2BaegydF4y2Ba,在连续时间内的形式如下:gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 一个gydF4y2Ba xgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba BgydF4y2Ba ugydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba KgydF4y2Ba egydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ygydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba CgydF4y2Ba xgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba DgydF4y2Ba ugydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba egydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba xgydF4y2Ba (gydF4y2Ba 0gydF4y2Ba )gydF4y2Ba =gydF4y2Ba xgydF4y2Ba 0gydF4y2Ba

在离散时间下,状态空间模型的形式为:gydF4y2Ba

xgydF4y2Ba [gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba ]gydF4y2Ba =gydF4y2Ba 一个gydF4y2Ba xgydF4y2Ba [gydF4y2Ba kgydF4y2Ba ]gydF4y2Ba +gydF4y2Ba BgydF4y2Ba ugydF4y2Ba [gydF4y2Ba kgydF4y2Ba ]gydF4y2Ba +gydF4y2Ba KgydF4y2Ba egydF4y2Ba [gydF4y2Ba kgydF4y2Ba ]gydF4y2Ba ygydF4y2Ba [gydF4y2Ba kgydF4y2Ba ]gydF4y2Ba =gydF4y2Ba CgydF4y2Ba xgydF4y2Ba [gydF4y2Ba kgydF4y2Ba ]gydF4y2Ba +gydF4y2Ba DgydF4y2Ba ugydF4y2Ba [gydF4y2Ba kgydF4y2Ba ]gydF4y2Ba +gydF4y2Ba egydF4y2Ba [gydF4y2Ba kgydF4y2Ba ]gydF4y2Ba xgydF4y2Ba [gydF4y2Ba 1gydF4y2Ba ]gydF4y2Ba =gydF4y2Ba xgydF4y2Ba 0gydF4y2Ba

您的MATLAB ODE函数将用户定义的参数合并到gydF4y2Ba一个gydF4y2Ba,gydF4y2BaBgydF4y2Ba,gydF4y2BaCgydF4y2Ba,gydF4y2BaDgydF4y2Ba函数返回的矩阵。相关联的gydF4y2BaidgreygydF4y2Ba模型引用这个函数和估计函数gydF4y2Ba感动的gydF4y2Ba而且gydF4y2BapemgydF4y2Ba在估计参数时使用这些矩阵定义。gydF4y2Ba

有关为。创建ODE函数的详细信息gydF4y2BaidgreygydF4y2Ba,请参阅gydF4y2Ba估计线性灰盒模型gydF4y2Ba.gydF4y2Ba

创建gydF4y2Ba

创建一个gydF4y2BaidgreygydF4y2Ba使用gydF4y2BaidgreygydF4y2Ba命令。为此,编写一个MATLAB函数返回gydF4y2Ba一个gydF4y2Ba,gydF4y2BaBgydF4y2Ba,gydF4y2BaCgydF4y2Ba,gydF4y2BaDgydF4y2Ba可估计参数和采样时间的给定值的矩阵。您可以传递额外的输入参数,例如时间常数或增益,它们不是参数,但ODE在输出参数的表达式中使用它们。gydF4y2Ba

除了gydF4y2Ba一个gydF4y2Ba,gydF4y2BaBgydF4y2Ba,gydF4y2BaCgydF4y2Ba,gydF4y2BaDgydF4y2Ba矩阵,你的MATLAB函数可以返回gydF4y2BaKgydF4y2Ba矩阵如果你想要gydF4y2BaKgydF4y2Ba值为输入参数的函数。你的函数也可以返回初始状态向量gydF4y2Bax0gydF4y2Ba.但是,参数化的替代和推荐方法gydF4y2Bax0gydF4y2Ba就是使用gydF4y2BaInitialStategydF4y2Ba估算选项gydF4y2BagreyestOptionsgydF4y2Ba.gydF4y2Ba

注意,您可以编写ODE函数来表示连续时间动态或离散时间动态,而不管函数的性质如何gydF4y2BaidgreygydF4y2Ba模型本身。例如,您可以指定一个离散时间gydF4y2BaidgreygydF4y2Ba模型(gydF4y2Basys。t > 0gydF4y2Ba),它使用ODE函数的连续时间参数化。类似地,您可以指定ODE函数的离散时间参数化,并将其与连续时间idgrey模型(gydF4y2Basys。t = 0gydF4y2Ba).的gydF4y2BaidgreygydF4y2Ba输入参数gydF4y2Bafcn_typegydF4y2Ba通知idgrey模型ODE函数使用什么类型的参数化。有关更多信息,请参见gydF4y2Ba估计线性灰盒模型gydF4y2Ba.gydF4y2Ba

使用估计函数gydF4y2BapemgydF4y2Ba或gydF4y2Ba感动的gydF4y2Ba的未知参数的估计值gydF4y2BaidgreygydF4y2Ba模型。不像其他估计函数,如gydF4y2Ba党卫军gydF4y2Ba,可以创建一个新的模型对象,gydF4y2Ba感动的gydF4y2Ba可以估计参数只有一个gydF4y2BaidgreygydF4y2Ba已存在并指定为输入参数的模型。您可以使用gydF4y2Basys.Structures.ParametersgydF4y2Ba,在那里gydF4y2BasysgydF4y2Ba是一个gydF4y2BaidgreygydF4y2Ba模型。gydF4y2Ba

你可以将gydF4y2BaidgreygydF4y2Ba模型转换为其他动态系统,例如gydF4y2BaidpolygydF4y2Ba,gydF4y2Ba中的难点gydF4y2Ba,gydF4y2Ba特遣部队gydF4y2Ba,或gydF4y2Ba党卫军gydF4y2Ba.不能将动态系统转换为gydF4y2BaidgreygydF4y2Ba模型。gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

sysgydF4y2Ba= idgrey (gydF4y2BaodefungydF4y2Ba,gydF4y2Ba参数gydF4y2Ba,gydF4y2Bafcn_typegydF4y2Ba)gydF4y2Ba创建线性灰盒模型gydF4y2BasysgydF4y2Ba具有可识别的参数。gydF4y2BaodefungydF4y2Ba指定与模型参数相关的用户定义函数gydF4y2Ba参数gydF4y2Ba到它们的状态空间表示。gydF4y2Bafcn_typegydF4y2Ba指定模型是连续时间参数化、离散时间参数化还是同时参数化。gydF4y2Ba

例子gydF4y2Ba

sysgydF4y2Ba= idgrey (gydF4y2BaodefungydF4y2Ba,gydF4y2Ba参数gydF4y2Ba,gydF4y2Bafcn_typegydF4y2Ba,gydF4y2Baextra_argsgydF4y2Ba)gydF4y2Ba指定其他参数gydF4y2Baextra_argsgydF4y2Ba那gydF4y2BaodefungydF4y2Ba需要。gydF4y2Ba

例子gydF4y2Ba

sysgydF4y2Ba= idgrey (gydF4y2BaodefungydF4y2Ba,gydF4y2Ba参数gydF4y2Ba,gydF4y2Bafcn_typegydF4y2Ba,gydF4y2Baextra_argsgydF4y2BaTs)gydF4y2Ba指定采样时间gydF4y2BaTsgydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

sysgydF4y2Ba= idgrey (gydF4y2BaodefungydF4y2Ba,gydF4y2Ba参数gydF4y2Ba,gydF4y2Bafcn_typegydF4y2Ba,gydF4y2Baextra_argsgydF4y2Ba,gydF4y2BaTsgydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba合并由一个或多个名称-值参数指定的其他选项。gydF4y2Ba

输入参数gydF4y2Ba

全部展开gydF4y2Ba

MATLAB函数(。米,.p, or .mex* file) that relates the model parameters参数gydF4y2Ba到它们的状态空间表示形式,指定为函数句柄或包含函数名的字符数组或字符串。作为一个选择,gydF4y2BaodefungydF4y2Ba还可以将模型参数与扰动矩阵和初始状态联系起来。有关创建ODE函数的信息,请参见gydF4y2Ba估计线性灰盒模型gydF4y2Ba.方法中指定的参数与ODE函数定义的参数相同gydF4y2Ba参数gydF4y2Ba输入参数gydF4y2BaidgreygydF4y2Ba.gydF4y2Ba

如果gydF4y2BaodefungydF4y2Ba不在MATLAB路径上,则指定完整文件名,包括路径。gydF4y2Ba

如果gydF4y2BaodefungydF4y2Ba不返回扰动矩阵gydF4y2BaKgydF4y2Ba和初始状态值gydF4y2Bax0gydF4y2Ba时,这些值就不是可估计的参数gydF4y2BaidgreygydF4y2Ba对象。相反,在估计期间,软件使用gydF4y2BaDisturbanceModelgydF4y2Ba而且gydF4y2BaInitialStategydF4y2Ba分别是评估选项。你可以确定的值gydF4y2BaKgydF4y2Ba设置为零gydF4y2BaDisturbanceModelgydF4y2Ba选项gydF4y2Ba“没有”gydF4y2Ba.这样做通常能提供模拟结果与实测数据之间的最佳匹配。有关的更多信息gydF4y2BaKgydF4y2Ba值,请参阅gydF4y2BaKgydF4y2Ba.有关评估选项的详细信息,请参见gydF4y2BagreyestOptionsgydF4y2Ba.gydF4y2Ba

的gydF4y2BaidgreygydF4y2Ba模型中存储ODE函数名或句柄gydF4y2Basys.Structures.FunctiongydF4y2Ba财产。gydF4y2Ba

有关创建ODE函数的详细信息,请参见gydF4y2Ba估计线性灰盒模型gydF4y2Ba.gydF4y2Ba

所需参数的初始值gydF4y2BaodefungydF4y2Ba,指定为单元格数组或矩阵:gydF4y2Ba

  • 如果你的模型需要多个参数,gydF4y2Ba参数gydF4y2Ba必须是单元格数组。gydF4y2Ba

  • 如果你的模型只需要一个参数,这个参数本身可能是一个向量或矩阵,gydF4y2Ba参数gydF4y2Ba可以是矩阵。gydF4y2Ba

属性指定参数名gydF4y2BaNgydF4y2Ba-by-2单元格数组,其中gydF4y2BaNgydF4y2Ba是参数的个数。第一列指定名称,第二列指定参数的值。gydF4y2Ba

例如,下面的命令指定名为gydF4y2Ba“质量”gydF4y2Ba,gydF4y2Ba“刚度”gydF4y2Ba,gydF4y2Ba“阻尼”gydF4y2Ba.gydF4y2Ba

参数={'质量',par1;'刚度',par2;'阻尼',par3}gydF4y2Ba

参数配置举例请参见gydF4y2Ba灰盒模型可估计参数的配置gydF4y2Ba.gydF4y2Ba

的gydF4y2BaidgreygydF4y2Ba模型将估计的参数存储在gydF4y2Basys.Structures.ParametersgydF4y2Ba财产。gydF4y2Ba

函数类型,指示模型是连续时间参数化、离散时间参数化还是同时参数化,指定为包含以下值之一的字符数组或字符串:gydF4y2Ba

  • “c”gydF4y2Ba- - - - - -gydF4y2BaodefungydF4y2Ba返回与连续时间系统相对应的矩阵,而不考虑的值gydF4y2BaTsgydF4y2Ba.gydF4y2Ba

  • ' d 'gydF4y2Ba- - - - - -gydF4y2BaodefungydF4y2Ba返回对应于离散时间系统的矩阵,其值可能取决于的值,也可能不取决于gydF4y2BaTsgydF4y2Ba.gydF4y2Ba

  • “cd”gydF4y2Ba- - - - - -gydF4y2BaodefungydF4y2Ba返回与连续时间系统相对应的矩阵gydF4y2BaTsgydF4y2Ba= 0或离散时间系统,如果gydF4y2BaTsgydF4y2Ba> 0。gydF4y2Ba

    如果gydF4y2BaTsgydF4y2Ba> 0,选择gydF4y2Ba“cd”gydF4y2Ba而不是gydF4y2Ba' d 'gydF4y2Ba当您希望软件使用返回的值对您的模型进行采样时gydF4y2BaodefungydF4y2Ba而是使用软件内部的采样时间转换例程。gydF4y2Ba

有关设置此参数的示例,请参见gydF4y2Ba建立参数可估计的灰盒模型gydF4y2Ba.gydF4y2Ba

的gydF4y2BaidgreygydF4y2Ba模型中存储函数类型gydF4y2Basys.Structures.FunctionTypegydF4y2Ba财产。gydF4y2Ba

所需的额外输入参数gydF4y2BaodefungydF4y2Ba,指定为单元格数组。如果gydF4y2BaodefungydF4y2Ba不需要额外的输入参数,指定gydF4y2Baextra_argsgydF4y2Ba作为gydF4y2Ba{}gydF4y2Ba.gydF4y2Ba

有关使用此参数的示例,请参见gydF4y2Ba建立参数可估计的灰盒模型gydF4y2Ba.gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

此属性是只读的。gydF4y2Ba

ODE函数所表示的状态空间矩阵的值gydF4y2BaodefungydF4y2Ba返回,指定如下:gydF4y2Ba

  • 一个gydF4y2Ba-状态矩阵gydF4y2Ba一个gydF4y2Ba,一个gydF4y2BaNxgydF4y2Ba——- - - - - -gydF4y2BaNxgydF4y2Ba矩阵,gydF4y2BaNxgydF4y2Ba是状态数。gydF4y2Ba

  • BgydF4y2Ba-输入到状态矩阵gydF4y2BaBgydF4y2Ba,一个gydF4y2BaNxgydF4y2Ba——- - - - - -gydF4y2BaνgydF4y2Ba矩阵,gydF4y2BaνgydF4y2Ba是输入的数量。gydF4y2Ba

  • CgydF4y2Ba-状态-输出矩阵gydF4y2BaCgydF4y2Ba,一个gydF4y2Ba纽约gydF4y2Ba——- - - - - -gydF4y2BaNxgydF4y2Ba矩阵,gydF4y2Ba纽约gydF4y2Ba是输出的数量。gydF4y2Ba

  • DgydF4y2Ba-馈通矩阵gydF4y2BaDgydF4y2Ba,一个gydF4y2Ba纽约gydF4y2Ba——- - - - - -gydF4y2BaνgydF4y2Ba矩阵。gydF4y2Ba

有关此属性的示例,请参见gydF4y2Ba建立参数可估计的灰盒模型gydF4y2Ba.gydF4y2Ba

状态扰动矩阵的值gydF4y2BaKgydF4y2Ba,指定为gydF4y2BaNxgydF4y2Ba——- - - - - -gydF4y2Ba纽约gydF4y2Ba矩阵,gydF4y2BaNxgydF4y2Ba状态数和gydF4y2Ba纽约gydF4y2Ba是输出的数量。gydF4y2Ba

  • 如果gydF4y2BaodefungydF4y2Ba参数化的gydF4y2BaKgydF4y2Ba矩阵,然后gydF4y2BaKgydF4y2Ba返回的值是否为gydF4y2BaodefungydF4y2Ba.gydF4y2BaodefungydF4y2Ba参数化的gydF4y2BaKgydF4y2Ba矩阵,如果它返回至少五个输出,并且第五个输出的值不包含gydF4y2Ba南gydF4y2Ba值。gydF4y2Ba

  • 如果gydF4y2BaodefungydF4y2Ba没有参数化gydF4y2BaKgydF4y2Ba矩阵,然后gydF4y2BaKgydF4y2Ba是一个零矩阵。的固定值处理为零值gydF4y2BaKgydF4y2Ba矩阵估计。使…有价值gydF4y2BaKgydF4y2Ba可估计的,使用gydF4y2BaDisturbanceModelgydF4y2Ba估计的选择。gydF4y2Ba

  • 不管是否gydF4y2BaKgydF4y2Ba矩阵参数化为gydF4y2BaodefungydF4y2Ba的值也可以设置gydF4y2BaKgydF4y2Ba明确产权。属性的固定值gydF4y2BaKgydF4y2Ba矩阵估计。要使值可估计,请使用gydF4y2BaDisturbanceModelgydF4y2Ba估计的选择。gydF4y2Ba

创建的估计选项集gydF4y2BaidgreygydF4y2Ba模型,使用gydF4y2BagreyestOptionsgydF4y2Ba.gydF4y2Ba

州名,指定为以下值之一:gydF4y2Ba

  • 字符向量-用于一阶模型gydF4y2Ba

  • 字符向量的单元数组-用于具有两个或多个状态的模型gydF4y2Ba

  • ”gydF4y2Ba-针对未命名的州gydF4y2Ba

你可以指定gydF4y2BaStateNamegydF4y2Ba使用字符串,例如gydF4y2Ba“速度”gydF4y2Ba,但州名存储为字符向量,gydF4y2Ba“速度”gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“速度”gydF4y2Ba

例子:gydF4y2Ba{x1, x2的}gydF4y2Ba

状态单位,指定为以下值之一:gydF4y2Ba

  • 字符向量-用于一阶模型gydF4y2Ba

  • 字符向量的单元数组-用于具有两个或多个状态的模型gydF4y2Ba

  • ”gydF4y2Ba-对于没有指定单位的州gydF4y2Ba

使用gydF4y2BaStateUnitgydF4y2Ba为了跟踪表示每个状态的单位。gydF4y2BaStateUnitgydF4y2Ba对系统行为没有影响。gydF4y2Ba

你可以指定gydF4y2BaStateUnitgydF4y2Ba使用字符串,例如gydF4y2Ba“英里”gydF4y2Ba,但状态单位存储为字符向量,gydF4y2Ba“英里”gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“英里”gydF4y2Ba

例子:gydF4y2Ba{“转”,“rad / s”}gydF4y2Ba

的可估计参数的信息gydF4y2BaidgreygydF4y2Ba模型,指定为gydF4y2BaLinearODEgydF4y2Ba结构。gydF4y2Ba

  • 结构。函数gydF4y2Ba的MATLAB函数的名称或函数句柄gydF4y2BaidgreygydF4y2Ba模型。gydF4y2Ba

  • 结构。函数Type-指示模型是连续时间参数化、离散时间参数化还是同时参数化。gydF4y2Ba

  • 结构。参数gydF4y2Ba—预估参数信息。gydF4y2Ba结构。参数gydF4y2Ba包含以下字段:gydF4y2Ba

    • 价值gydF4y2Ba—参数值。例如,gydF4y2Basys.Structure.Parameters (2) valuegydF4y2Ba包含第二个参数的初始值或估计值。gydF4y2Ba

      南gydF4y2Ba表示未知参数值。gydF4y2Ba

    • 最低gydF4y2Ba—参数在估计时可以假定的最小值。例如,gydF4y2Basys.Structure.Parameters(1)。最小值= 0gydF4y2Ba将第一个参数约束为大于或等于零。gydF4y2Ba

    • 最大gydF4y2Ba—参数估计时可以假设的最大值。gydF4y2Ba

    • 免费的gydF4y2Ba-布尔值,用于指定参数是否可估计。如果要在估计过程中固定参数的值,请设置gydF4y2Ba免费= falsegydF4y2Ba对应的项。gydF4y2Ba

    • 规模gydF4y2Ba—参数值的比例。gydF4y2Ba规模gydF4y2Ba不用于估计。gydF4y2Ba

    • 信息gydF4y2Ba-用于存储参数单位和标签的结构数组。结构有gydF4y2Ba标签gydF4y2Ba而且gydF4y2Ba单位gydF4y2Ba字段。gydF4y2Ba

      将参数单位和标签指定为字符向量。例如,gydF4y2Ba“时间”gydF4y2Ba.gydF4y2Ba

  • 结构。ExtraArgumentsgydF4y2Ba- ODE函数需要的额外输入参数。gydF4y2Ba

  • 结构。StateNamegydF4y2Ba—模型状态名称。gydF4y2Ba

  • 结构。StateUnitgydF4y2Ba-模型状态单元。gydF4y2Ba

噪声方差模型的创新gydF4y2BaegydF4y2Ba,指定为标量或协方差矩阵。对于SISO模型,gydF4y2BaNoiseVariancegydF4y2Ba是标量。对于MIMO模型,gydF4y2BaNoiseVariancegydF4y2Ba是一个gydF4y2Ba纽约gydF4y2Ba——- - - - - -gydF4y2Ba纽约gydF4y2Ba矩阵,gydF4y2Ba纽约gydF4y2Ba是系统中输出的数量。gydF4y2Ba

被识别的模型包括一个白色的高斯噪声分量,gydF4y2BaegydF4y2Ba(gydF4y2BatgydF4y2Ba).gydF4y2BaNoiseVariancegydF4y2Ba是这个噪声分量的方差。通常,模型估计函数(如gydF4y2Ba感动的gydF4y2Ba或gydF4y2BapemgydF4y2Ba)决定这个方差。gydF4y2Ba

此属性是只读的。gydF4y2Ba

方法获得灰盒模型时,包含有关估计选项和结果的信息的摘要报告gydF4y2Ba感动的gydF4y2Ba估计命令。使用gydF4y2Ba报告gydF4y2Ba查询一个模型的估计方法,包括:gydF4y2Ba

  • 估算方法gydF4y2Ba

  • 估计选项gydF4y2Ba

  • 查询终止条件gydF4y2Ba

  • 估计数据拟合和其他质量度量gydF4y2Ba

的内容gydF4y2Ba报告gydF4y2Ba如果模型是由构造创建的,则无关紧要。gydF4y2Ba

odefun =gydF4y2Ba“motorDynamics”gydF4y2Ba;M = idgrey(odefun,1,gydF4y2Ba“cd”gydF4y2Ba, 0.25, 0);m.Report.OptionsUsedgydF4y2Ba
Ans = []gydF4y2Ba

如果使用估计命令获得灰盒模型,则gydF4y2Ba报告gydF4y2Ba包含关于估计数据、选项和结果的信息。gydF4y2Ba

负载(fullfile (matlabrootgydF4y2Ba“工具箱”gydF4y2Ba,gydF4y2Ba“识别”gydF4y2Ba,gydF4y2Ba“iddemos”gydF4y2Ba,gydF4y2Ba“数据”gydF4y2Ba,gydF4y2Ba“dcmotordata”gydF4y2Ba));数据= iddata(y,u,0.1,gydF4y2Ba“名字”gydF4y2Ba,gydF4y2Ba直流电机的gydF4y2Ba);odefun =gydF4y2Ba“motorDynamics”gydF4y2Ba;Init_sys = idgrey(gydF4y2Ba“motorDynamics”gydF4y2Ba,1,gydF4y2Ba“cd”gydF4y2Ba, 0.25, 0);M = greyest(data,init_sys);m.Report.OptionsUsedgydF4y2Ba
InitialState: 'auto'扰动模型:'auto'焦点:'预测' EstimateCovariance: 1显示:'off' InputOffset: [] OutputOffset:[]正则化:[1x1 struct] OutputWeight: [] SearchMethod: 'auto' SearchOptions: [1x1 idoptions.search. search.]高级:[1x1 struct]gydF4y2Ba

有关此属性以及如何使用它的更多信息,请参阅相应估计命令参考页的Output Arguments部分gydF4y2Ba评估报告gydF4y2Ba.gydF4y2Ba

每个输入的延迟,指定为标量或向量。对于一个系统gydF4y2BaνgydF4y2Ba输入,设置gydF4y2BaInputDelaygydF4y2Ba到一个gydF4y2BaνgydF4y2Ba1的向量。该向量的每一项都是一个数值,表示对应输入通道的输入延迟。中存储的时间单位指定输入延迟gydF4y2BaTimeUnitgydF4y2Ba模型对象的属性。对于离散时间模型,指定输入延迟为采样时间的整数倍gydF4y2BaTsgydF4y2Ba.例如,gydF4y2BaInputDelay = 3gydF4y2Ba表示三次采样时间的延迟。gydF4y2Ba

集gydF4y2BaInputDelaygydF4y2Ba到一个标量值,以便对所有通道应用相同的延迟。gydF4y2Ba

对于已识别的系统,如gydF4y2BaidgreygydF4y2Ba,gydF4y2BaOutputDelaygydF4y2Ba固定为零。gydF4y2Ba

采样时间,指定为下列之一。gydF4y2Ba

  • 连续时间模型-gydF4y2Ba0gydF4y2Ba

  • 具有指定采样时间的离散时间模型-正标量,表示以指定的单位表示的采样周期gydF4y2BaTimeUnitgydF4y2Ba模型属性gydF4y2Ba

  • 不确定采样时间的离散时间模型gydF4y2Ba-1gydF4y2Ba

为gydF4y2BaidgreygydF4y2Ba模型,gydF4y2BaTsgydF4y2Ba没有唯一的默认值。gydF4y2BaTsgydF4y2Ba取决于的值gydF4y2Bafcn_typegydF4y2Ba.gydF4y2Ba

更改此属性不会对模型进行离散化或重新采样。使用gydF4y2Ba汇集gydF4y2Ba而且gydF4y2Bad2cgydF4y2Ba在连续时间表示和离散时间表示之间进行转换。使用gydF4y2Bad2dgydF4y2Ba改变离散时间系统的采样时间。gydF4y2Ba

模型时间单位,指定为以下值之一:gydF4y2Ba

  • “纳秒”gydF4y2Ba

  • 微秒的gydF4y2Ba

  • 的毫秒gydF4y2Ba

  • “秒”gydF4y2Ba

  • “分钟”gydF4y2Ba

  • “小时”gydF4y2Ba

  • “天”gydF4y2Ba

  • “周”gydF4y2Ba

  • “月”gydF4y2Ba

  • “年”gydF4y2Ba

你可以指定gydF4y2BaTimeUnitgydF4y2Ba使用字符串,例如gydF4y2Ba“小时”gydF4y2Ba,但时间单位存储为字符向量,gydF4y2Ba“小时”gydF4y2Ba.gydF4y2Ba

建模属性,如采样时间gydF4y2BaTsgydF4y2Ba,gydF4y2BaInputDelaygydF4y2Ba,gydF4y2BaOutputDelaygydF4y2Ba的单位表示,其他时延用gydF4y2BaTimeUnitgydF4y2Ba.更改此属性不会对其他属性产生影响,因此会改变整个系统行为。使用gydF4y2BachgTimeUnitgydF4y2Ba在时间单位之间转换而不修改系统行为。gydF4y2Ba

输入通道的名称,指定为以下值之一:gydF4y2Ba

  • 字符向量-用于单输入模型gydF4y2Ba

  • 字符向量的单元数组-用于具有两个或多个输入的模型gydF4y2Ba

  • ”gydF4y2Ba—对于没有指定名称的输入gydF4y2Ba

您可以使用自动向量展开为多输入模型分配输入名称。例如,如果gydF4y2BasysgydF4y2Ba是一个双输入模型,输入:gydF4y2Ba

sys。InputName =gydF4y2Ba“控制”gydF4y2Ba;gydF4y2Ba

输入名称自动展开为gydF4y2Ba{“控制(1)”,“控制”(2)}gydF4y2Ba.gydF4y2Ba

你可以用速记法gydF4y2BaugydF4y2Ba请参阅gydF4y2BaInputNamegydF4y2Ba财产。例如,gydF4y2Basys.ugydF4y2Ba等于gydF4y2Basys。InputNamegydF4y2Ba.gydF4y2Ba

输入通道名有几种用途,包括:gydF4y2Ba

  • 识别模型显示和图上的通道gydF4y2Ba

  • 提取MIMO系统的子系统gydF4y2Ba

  • 在连接模型时指定连接点gydF4y2Ba

你可以指定gydF4y2BaInputNamegydF4y2Ba使用字符串,例如gydF4y2Ba“电压”gydF4y2Ba,但输入名称存储为字符向量,gydF4y2Ba“电压”gydF4y2Ba.gydF4y2Ba

当你估计一个模型使用gydF4y2BaiddatagydF4y2Ba对象,gydF4y2Ba数据gydF4y2Ba,软件自动设置gydF4y2BaInputNamegydF4y2Ba来gydF4y2Ba数据。InputNamegydF4y2Ba.gydF4y2Ba

输入信号的单位,用下列值之一表示:gydF4y2Ba

  • 字符向量-用于单输入模型gydF4y2Ba

  • 字符向量的单元数组-用于具有两个或多个输入的模型gydF4y2Ba

  • ”gydF4y2Ba-对于没有指定单位的输入gydF4y2Ba

使用gydF4y2BaInputUnitgydF4y2Ba为了跟踪每个输入信号的表达单位。gydF4y2BaInputUnitgydF4y2Ba对系统行为没有影响。gydF4y2Ba

你可以指定gydF4y2BaInputUnitgydF4y2Ba使用字符串,例如gydF4y2Ba“电压”gydF4y2Ba,但输入单位存储为字符向量,gydF4y2Ba“电压”gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“电压”gydF4y2Ba

例子:gydF4y2Ba{“电压”,“转”}gydF4y2Ba

输入通道组,指定为一个结构,其中字段是组名,值是属于相应组的输入通道的索引。当你使用gydF4y2BaInputGroupgydF4y2Ba将MIMO系统的输入通道分配给组,需要访问时可以通过名称引用每个组。例如,假设您有一个五个输入的模型gydF4y2BasysgydF4y2Ba,其中前三个输入为控制输入,其余两个输入为噪声。的控制和噪声输入gydF4y2BasysgydF4y2Ba将各组分开。gydF4y2Ba

sys.InputGroup.controls = [1:3];sys.InputGroup.noise = [4 5];gydF4y2Ba

使用组名将子系统从控制输入提取到所有输出。gydF4y2Ba

sys (:,gydF4y2Ba“控制”gydF4y2Ba)gydF4y2Ba

例子:gydF4y2Ba结构(“控制”,[1:3],“噪声”,[4 - 5])gydF4y2Ba

输出通道的名称,指定为以下值之一:gydF4y2Ba

  • 字符矢量-用于单输出模型gydF4y2Ba

  • 字符向量的单元数组-用于具有两个或多个输出的模型gydF4y2Ba

  • ”gydF4y2Ba—不指定名称的输出gydF4y2Ba

您可以使用自动向量展开为多输出模型分配输出名称。例如,如果gydF4y2BasysgydF4y2Ba是一个双输出模型,输入:gydF4y2Ba

sys。OutputName =gydF4y2Ba“测量”gydF4y2Ba;gydF4y2Ba

输出名称自动展开为gydF4y2Ba{“测量(1)”,“测量”(2)}gydF4y2Ba.gydF4y2Ba

你可以用速记法gydF4y2BaygydF4y2Ba请参阅gydF4y2BaOutputNamegydF4y2Ba财产。例如,gydF4y2Basys.ygydF4y2Ba等于gydF4y2Basys。OutputNamegydF4y2Ba.gydF4y2Ba

输出通道名有几种用途,包括:gydF4y2Ba

  • 识别模型显示和图上的通道gydF4y2Ba

  • 提取MIMO系统的子系统gydF4y2Ba

  • 在连接模型时指定连接点gydF4y2Ba

你可以指定gydF4y2BaOutputNamegydF4y2Ba使用字符串,例如gydF4y2Ba“转”gydF4y2Ba,但输出名称存储为字符向量,gydF4y2Ba“转”gydF4y2Ba.gydF4y2Ba

当你估计一个模型使用gydF4y2BaiddatagydF4y2Ba对象,gydF4y2Ba数据gydF4y2Ba,软件自动设置gydF4y2BaOutputNamegydF4y2Ba来gydF4y2Ba数据。OutputNamegydF4y2Ba.gydF4y2Ba

输出信号的单位,指定为下列值之一:gydF4y2Ba

  • 字符矢量-用于单输出模型gydF4y2Ba

  • 字符向量的单元数组-用于具有两个或多个输出的模型gydF4y2Ba

  • ”gydF4y2Ba—用于没有指定单位的输出gydF4y2Ba

使用gydF4y2BaOutputUnitgydF4y2Ba为了跟踪每个输出信号的表达单位。gydF4y2BaOutputUnitgydF4y2Ba对系统行为没有影响。gydF4y2Ba

你可以指定gydF4y2BaOutputUnitgydF4y2Ba使用字符串,例如gydF4y2Ba“电压”gydF4y2Ba,但输出单位存储为字符向量,gydF4y2Ba“电压”gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“电压”gydF4y2Ba

例子:gydF4y2Ba{“电压”,“转”}gydF4y2Ba

输出通道组,指定为一个结构,其中字段是组名,值是属于相应组的输出通道的索引。当你使用gydF4y2BaOutputGroupgydF4y2Ba将MIMO系统的输出通道分配给组,需要访问时可以通过名称引用每个组。例如,假设您有一个四输出模型gydF4y2BasysgydF4y2Ba,其中第二个输出是温度,其余是状态测量。将这些输出分配给单独的组。gydF4y2Ba

sys.OutputGroup.temperature = [2];sys.OutputGroup.measurements = [1 3 4];gydF4y2Ba

使用组名将子系统从所有输入提取到测量输出。gydF4y2Ba

系统(gydF4y2Ba“测量”gydF4y2Ba:)gydF4y2Ba

例子:gydF4y2BaStruct ('temperature',[2],'measurement',[1 3 4])gydF4y2Ba

模型名称,存储为字符向量。你可以指定gydF4y2Ba的名字gydF4y2Ba使用字符串,例如gydF4y2Ba“DCmotor”gydF4y2Ba,但输出单位存储为字符向量,gydF4y2Ba“DCmotor”gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“system_1”gydF4y2Ba

关于模型的文本注释,存储为字符向量的字符串或单元格数组。属性存储您提供的这两种数据类型中的任何一种。例如,假设gydF4y2Basys1gydF4y2Ba而且gydF4y2Basys2gydF4y2Ba是动态系统模型,并设置其gydF4y2Ba笔记gydF4y2Ba属性分别设置为字符串和字符向量。gydF4y2Ba

sys1。笔记=gydF4y2Basys1有一个字符串。gydF4y2Ba;sys2。笔记=gydF4y2Basys2有一个字符向量gydF4y2Ba;sys1。笔记sys2。笔记gydF4y2Ba
Ans = "sys1有一个字符串" Ans = " sys2有一个字符向量"gydF4y2Ba

希望与模型关联并存储的任何类型的数据,指定为任何MATLAB数据类型。gydF4y2Ba

模型数组的采样网格,指定为结构。gydF4y2Ba对于通过对一个或多个自变量采样而得到的已识别线性(IDLTI)模型数组,此属性跟踪与每个模型相关的变量值。gydF4y2Ba当您显示或绘制模型数组时,将显示此信息。使用这些信息将结果追溯到自变量。gydF4y2Ba

将数据结构的字段名设置为采样变量的名称。将字段值设置为与数组中的每个模型相关联的采样变量值。所有抽样变量都应该是数值和标量值,所有抽样值的数组都应该匹配模型数组的维度。gydF4y2Ba

例如,如果您在系统的各个操作点上收集数据,您可以分别为每个操作点识别一个模型,然后将结果叠加到单个系统数组中。你可以用操作点的信息标记数组中的各个模型:gydF4y2Ba

Nominal_engine_rpm = [1000 5000 10000];sys。SamplingGrid = struct(gydF4y2Ba“转”gydF4y2Banominal_engine_rpm)gydF4y2Ba

在哪里gydF4y2BasysgydF4y2Ba是一个数组,包含分别在RPMS 1000、5000和10000处获得的三个已标识的模型。gydF4y2Ba

用于通过线性化Simulink生成的模型数组金宝appgydF4y2Ba®gydF4y2Ba在多个参数值或工作点建模,软件进行填充gydF4y2BaSamplingGridgydF4y2Ba自动使用对应于数组中每个条目的变量值。例如,gydF4y2Ba金宝appSimulink控制设计™gydF4y2Ba命令gydF4y2Ba线性化gydF4y2Ba(金宝appSimulink控制设计)gydF4y2Ba而且gydF4y2BaslLinearizergydF4y2Ba(金宝appSimulink控制设计)gydF4y2Ba填充gydF4y2BaSamplingGridgydF4y2Ba这样。gydF4y2Ba

对象的功能gydF4y2Ba

类的函数的信息gydF4y2BaidgreygydF4y2Ba对象,看到gydF4y2Ba线性灰盒模型gydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

创建和配置gydF4y2BaidgreygydF4y2Ba该模型包含一个带有一个可估计参数的ODE函数。gydF4y2Ba

本例使用了附带的文件gydF4y2BamotorDynamics.mgydF4y2Ba,表示直流电动机的线性动态,形式如下:gydF4y2Ba

xgydF4y2Ba .gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba [gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba -gydF4y2Ba 1gydF4y2Ba τgydF4y2Ba ]gydF4y2Ba xgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba [gydF4y2Ba 0gydF4y2Ba GgydF4y2Ba τgydF4y2Ba ]gydF4y2Ba ugydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ygydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba [gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba ]gydF4y2Ba xgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

motorDynamicsgydF4y2Ba返回gydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba BgydF4y2Ba ,gydF4y2Ba CgydF4y2Ba ,gydF4y2Ba DgydF4y2Ba 元素的元素gydF4y2Ba KgydF4y2Ba 矩阵和初始条件gydF4y2Ba X0gydF4y2Ba 来gydF4y2Ba0gydF4y2Ba.gydF4y2BamotorDynamicsgydF4y2Ba定义电机时间常数gydF4y2Ba τgydF4y2Ba 作为单个可估计参数。该模型还包括一个辅助参数gydF4y2Ba GgydF4y2Ba 这表示已知的静态增益。如果您想查看此模型的代码,请输入gydF4y2Ba编辑motorDynamicsgydF4y2Ba在命令行。gydF4y2Ba

初始化gydF4y2Ba τgydF4y2Ba 的值设置为1gydF4y2Ba参数gydF4y2Ba单元素矩阵gydF4y2Ba1gydF4y2Ba.集gydF4y2Bafcn_typegydF4y2Ba来gydF4y2Ba“cd”gydF4y2Ba要指定gydF4y2BaodefungydF4y2Ba可以返回连续时间(gydF4y2Bat = 0gydF4y2Ba)或离散时间表示(gydF4y2Bat > 0gydF4y2Ba).集gydF4y2Baextra_argsgydF4y2Ba,表示gydF4y2Ba GgydF4y2Ba ,gydF4y2Ba0.25gydF4y2Ba.设置采样时间gydF4y2BaTsgydF4y2Ba来gydF4y2Ba0gydF4y2Ba.gydF4y2Ba

odefun =gydF4y2Ba“motorDynamics”gydF4y2Ba;参数= 1;fcn_type =gydF4y2Ba“cd”gydF4y2Ba;Extra_args = 0.25;Ts = 0;gydF4y2Ba

创建gydF4y2BaidgreygydF4y2Ba模型gydF4y2BasysgydF4y2Ba.gydF4y2Ba

sys = idgrey(odefun,parameters,fcn_type,extra_args,Ts)gydF4y2Ba
sys =连续时间线性灰箱模型定义为“motorDynamics”功能:dx / dt = x (t) + B u e (t) + K (t) y (t) = C x (t) + D u (t) + e (t) = (x1, x2) x1 0 1 x2 0 1 B = u1 x1 0 x2 0.25 C y2 = (x1, x2)日元1 0 0 1 D = u1 y1 y2 0 K = y₁y2 x1 0 0 x2 0 0模型参数:Par1 = 1参数化:颂歌功能:motorDynamics(用参数表示连续和离散方程)干扰组件:由ODE函数参数化的初始状态:自由系数个数:1参数及其不确定性用“getpvec”、“getcov”表示。现状:由直接构建或改造而产生。不估计。gydF4y2Ba

来完善的估计gydF4y2Ba τgydF4y2Ba ,使用gydF4y2BapemgydF4y2Ba或gydF4y2Ba感动的gydF4y2Ba.gydF4y2Ba

指定灰盒模型的已知参数作为固定的估计。还要指定可估计参数的最小界限。gydF4y2Ba

创建一个ODE文件,将摆模型系数与其状态空间表示联系起来。将此函数保存为gydF4y2BaLinearPendulum.mgydF4y2Ba使其处于MATLAB®搜索路径中。gydF4y2Ba

函数gydF4y2Ba[A,B,C,D] =线性摆(m,g,l, B, Ts) A = [0 1;- g / l - b / m / l ^ 2);B = 0 (2,0);C = [10];D = 0 (1,0);gydF4y2Ba结束gydF4y2Ba

在这个函数中:gydF4y2Ba

  • 米gydF4y2Ba是摆的质量。gydF4y2Ba

  • ggydF4y2Ba是重力加速度。gydF4y2Ba

  • lgydF4y2Ba是钟摆长度。gydF4y2Ba

  • bgydF4y2Ba为粘性摩擦系数。gydF4y2Ba

  • TsgydF4y2Ba为模型采样时间。gydF4y2Ba

创建与ODE函数关联的线性灰盒模型。gydF4y2Ba

odefun =gydF4y2Ba“LinearPendulum”gydF4y2Ba;M = 1;G = 9.81;L = 1;B = 0.2;参数= {gydF4y2Ba“质量”gydF4y2Bam;gydF4y2Ba“重力”gydF4y2Bag;gydF4y2Ba“长度”gydF4y2Bal;gydF4y2Ba“摩擦”gydF4y2Bab};fcn_type =gydF4y2Ba“c”gydF4y2Ba;Sys = idgrey(odefun,parameters,fcn_type);gydF4y2Ba

sysgydF4y2Ba有四个参数。gydF4y2Ba

指定已知参数,gydF4y2Ba米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba,作为固定的估计。gydF4y2Ba

sys.Structure.Parameters(1)。Free = false;sys.Structure.Parameters(2)。Free = false;sys.Structure.Parameters(3)。Free = false;gydF4y2Ba

米gydF4y2Ba,gydF4y2BaggydF4y2Ba,gydF4y2BalgydF4y2Ba前三个参数是gydF4y2BasysgydF4y2Ba.gydF4y2Ba

指定的零下界gydF4y2BabgydF4y2Ba的第四个参数gydF4y2BasysgydF4y2Ba.gydF4y2Ba

sys.Structure.Parameters(4)。最小值= 0;gydF4y2Ba

类似地,要指定可估计参数的上限,请使用gydF4y2Ba最大gydF4y2Ba参数的字段。gydF4y2Ba

创建具有您指定的可识别参数和属性的灰盒模型。然后,指定一个附加属性。gydF4y2Ba

使用名称-值参数指定输入和输出通道的名称。gydF4y2Ba

odefun =gydF4y2Ba“motorDynamics”gydF4y2Ba;参数= 1;fcn_type =gydF4y2Ba“cd”gydF4y2Ba;Extra_args = 0.25;Ts = 0;sys = idgrey(odefun,parameters,fcn_type,extra_args,Ts,gydF4y2Ba“InputName”gydF4y2Ba,gydF4y2Ba“电压”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“OutputName”gydF4y2Ba, {gydF4y2Ba角位置的gydF4y2Ba,gydF4y2Ba的角速度gydF4y2Ba});gydF4y2Ba

指定gydF4y2BaTimeUnitgydF4y2Ba使用点表示法。gydF4y2Ba

sys。TimeUnit =gydF4y2Ba“秒”gydF4y2Ba;gydF4y2Ba

使用gydF4y2Ba堆栈gydF4y2Ba命令创建线性灰盒模型数组。gydF4y2Ba

指定gydF4y2Baodefun1gydF4y2Ba使用函数句柄gydF4y2Ba@motordynamicsgydF4y2Ba.设置静态增益为gydF4y2Ba1gydF4y2Ba,使用gydF4y2Baextra_args1gydF4y2Ba.gydF4y2Ba

odefun1 = @motorDynamics;parameter1 = [1 2];fcn_type =gydF4y2Ba“cd”gydF4y2Ba;Extra_args1 = 1;Sys1 = idgrey(odefun1,parameters1,fcn_type,extra_args1);大小(sys1)gydF4y2Ba
2输出1输入2状态2自由参数的灰盒模型。gydF4y2Ba

指定gydF4y2Baodefun2gydF4y2Ba使用函数名gydF4y2Ba“motorDynamics”gydF4y2Ba.将静态增益设置为0.5,使用gydF4y2Baextra_args2gydF4y2Ba.gydF4y2Ba

odefun2 =gydF4y2Ba“motorDynamics”gydF4y2Ba;Parameters2 = {[1 2]};Extra_args2 = 0.5;Sys2 = idgrey(odefun2,parameters2,fcn_type,extra_args2);gydF4y2Ba

使用gydF4y2Ba堆栈gydF4y2Ba要创建2 × 1数组gydF4y2BasysarrgydF4y2Ba的gydF4y2BaidgreygydF4y2Ba模型。gydF4y2Ba

Sysarr = stack(1,sys1,sys2);大小(sysarr)gydF4y2Ba
灰盒模型的2x1数组。每个模型有2个输出,1个输入,2个状态和2个自由参数。gydF4y2Ba

版本历史gydF4y2Ba

R2006a之前介绍gydF4y2Ba