主要内容

idnlgrey

非线性灰盒模型

语法

sys = idnlgrey(文件名,顺序,参数)
sys = idnlgrey(FileName,Order,Parameters,InitialStates)
sys = idnlgrey(文件名,顺序,参数,InitialStates,Ts)
sys = idnlgrey(文件名,顺序,参数,InitialStates,Ts,名称,值)

描述

sys= idnlgrey (文件名订单参数中指定的模型结构创建非线性灰盒模型文件名,输出、输入和状态的数量订单,为模型参数。

sys= idnlgrey (文件名订单参数InitialStates指定模型的初始状态。

sys= idnlgrey (文件名订单参数InitialStatesTs指定离散时间模型的采样时间。

sys= idnlgrey (文件名订单参数InitialStatesTs名称,值属性的附加属性idnlgrey模型结构使用一个或多个名称,值对参数。

对象描述

idnlgrey表示一个非线性灰盒模型。有关非线性灰盒模型的信息,请参见估计非线性灰盒模型

使用idnlgrey构造函数来建立非线性灰盒模型,然后利用模型参数进行估计nlgreyest

idnlgrey对象属性,请参见属性

例子

全部折叠

加载数据。

负载(fullfile (matlabroot“工具箱”“识别”“iddemos”“数据”“dcmotordata”));Z = iddata(y,u,0.1,“名字”直流电机的);

数据来自一个线性直流电动机,一个输入(电压),两个输出(角位置和角速度)。模型的结构由dcmotor_m.m文件。

创建一个非线性灰盒模型。

file_name =“dcmotor_m”;Order = [2 1 2];参数= [1;0.28];InitialStates = [0;0];sys = idnlgrey(file_name,Order,Parameters,InitialStates,0,...“名字”直流电机的);

加载数据。

负载(fullfile (matlabroot“工具箱”“识别”“iddemos”“数据”“twotankdata”));Z = iddata(y,u,0.2,“名字”“两个坦克”);

该数据包含一个两罐系统的3000个输入输出数据样本。输入是施加在泵上的电压,输出是下罐的液位。

指定描述双油箱系统模型结构的文件。该文件将状态导数和模型输出指定为时间、状态、输入和模型参数的函数。

文件名=“twotanks_c”

指定模型顺序[ny nu nx]。

Order = [1 1 2];

指定初始参数(Np = 6)。

参数= {0.5;0.0035;0.019;...9.81; 0.25; 0.016};

指定初始初始状态。

InitialStates = [0;0.1];

指定为连续系统。

Ts = 0;

创建idnlgrey模型对象。

nlgr = idnlgrey(文件名,顺序,参数,InitialStates,Ts,...“名字”“两个坦克”);

设置一些参数为常量。

nlgr.Parameters(1)。Fixed = true;nlgr.Parameters(4)。Fixed = true;nlgr.Parameters(5)。Fixed = true;

估计模型参数。

NLGR = nlgreyest(z, NLGR);

输入参数

全部折叠

存储模型结构的函数或墨西哥文件的名称,指定为字符向量(不带文件扩展名)或用于计算状态和输出的函数句柄。如果文件名例如,字符向量“twotanks_c”,那么它必须指向MATLAB®文件、P-code文件或mexo文件。有关文件变量的详细信息,请参见指定非线性灰盒模型结构

模型的输出、输入和状态的数量,指定为下列之一:

  • 向量[Ny Nu Nx],指定模型输出的数量纽约,输入ν,和州Nx

  • 带字段的结构“纽约”“怒”,“Nx”

对于时间序列,ν设置为0,对于静态模型结构,Nx设置为0

模型的参数,指定为以下之一:

  • Np-by-1结构数组,其中Np是参数的个数。该结构包含以下字段:

    描述 默认的
    的名字 参数的名称,指定为字符向量。例如,“压力” “π”,在那里中的整数。(1、Np)
    单位 参数的单位,指定为字符向量。
    价值

    参数的初始值,指定为:

    • 有限实标量

    • 有限实列向量

    • 二维实矩阵

    最低

    参数的最小值,指定为与之相同大小的实标量、列向量或矩阵价值

    最低> =价值对于所有组件。

    无穷(大小(值))
    最大

    参数的最大值,指定为实标量、列向量或相同大小的矩阵价值

    价值< =最大对于所有组件。

    正(大小(值))
    固定 指定参数是否固定为它们的初始值,指定为布尔标量、列向量或相同大小的矩阵价值

    false(大小(值))

    意味着,估计所有参数

    类的子字段使用点表示法参数。例如,对于idnlgrey模型,Th参数通过M.Parameters(我)和它的子场固定通过M.Parameters .Fixed(我)

  • Np-by-1的实有限初值向量,InParameters

    数据被转换为具有字段默认值的结构的名字单位最低最大,固定

    价值被赋值InParameters(我),在那里中的整数。(1、Np)

  • Np包含有限实标量、有限实向量或初始值的有限实二维矩阵的-by-1单元数组。

    这些字段使用默认值的名字单位最低最大,固定

指定为下列之一的模型参数的初始状态:

  • Nx-by-1结构数组,其中Nx是状态数。该结构包含以下字段:

    描述 默认的
    的名字 状态的名称,指定为字符向量。 “十一”,在那里中的整数。[1, Nx]
    单位 状态单位,指定为字符向量。
    价值

    初始状态的初始值,指定为:

    • 有限实标量

    • 一个有限实1 ×向量,数据集中的实验数量是否用于估计

    最低

    初始状态的最小值,指定为实标量或1 × -相同大小的向量价值

    最低> =价值对于所有组件。

    无穷(大小(值))
    最大

    参数的最大值,指定为实标量或1 × -相同大小的向量价值

    价值< =最大对于所有组件。

    正(大小(值))
    固定 指定初始状态是否固定于其初始值,该初始值指定为布尔标量或1 × -相同大小的向量价值

    真正的(大小(值))

    这意味着,不估计初始状态。

    类的子字段使用点表示法初始状态。例如,对于idnlgrey模型,初始状态通过M.InitialStates(我)和它的子场固定通过M.InitialStates .Fixed(我)

  • []

    用字段的默认值创建一个结构的名字单位最低最大,固定

    价值被赋值0

  • 实有限Nx——- - - - - -矩阵(InitStates)。

    价值结构数组元素为InitStates (Ne)的行向量元素。最低最大,固定而且真正的相同大小的行向量InitStates (Ne)

  • 有限实向量的单元格数组,大小为1 × -{}(一样[])。

采样时间,指定为表示采样周期的正标量。属性指定的单位表示TimeUnit模型的属性。对于连续时间模型Ts等于0(默认值)。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

使用名称,值参数来指定额外的参数属性idnlgrey模型创建期间的模型。

属性

idnlgrey对象属性包括:

文件名

存储模型结构的函数或mexo文件的名称,指定为字符向量(没有扩展名)或用于计算状态和输出的函数句柄。如果文件名例如,字符向量“twotanks_c”,那么它必须指向MATLAB文件,P-code文件,或mexo文件。有关文件变量的详细信息,请参见指定非线性灰盒模型结构

订单

模型的输出、输入和状态的数量,指定为下列之一:

  • 向量[Ny Nu Nx],指定模型输出的数量纽约,输入ν,和州Nx

  • 带字段的结构“纽约”“怒”,“Nx”

对于时间序列,ν设置为0,对于静态模型结构,Nx设置为0

参数

模型的参数,指定为以下之一:

  • Np-by-1结构数组,其中Np是参数的个数。该结构包含以下字段:

    描述 默认的
    的名字 参数的名称,指定为字符向量。例如,“压力” “π”,在那里中的整数。(1、Np)
    单位 参数的单位,指定为字符向量。
    价值

    参数的初始值,指定为:

    • 有限实标量

    • 有限实列向量

    • 二维实矩阵

    最低

    参数的最小值,指定为与之相同大小的实标量、列向量或矩阵价值

    最低> =价值对于所有组件。

    无穷(大小(值))
    最大

    参数的最大值,指定为实标量、列向量或相同大小的矩阵价值

    价值< =最大对于所有组件。

    正(大小(值))
    固定 指定参数是否固定为它们的初始值,指定为布尔标量、列向量或相同大小的矩阵价值

    false(大小(值))

    意味着,估计所有参数

  • Np-by-1的实有限初值向量,InParameters

    数据被转换为具有字段默认值的结构的名字单位最低最大,固定

    价值被赋值InParameters(我),在那里中的整数。(1、Np)

  • Np包含有限实标量、有限实向量或初始值的有限实二维矩阵的-by-1单元数组。

    用字段的默认值创建一个结构的名字单位最低最大,固定

类的子字段使用点表示法参数。例如,对于idnlgrey模型,Th参数通过M.Parameters(我)和它的子场固定通过M.Parameters .Fixed(我)

InitialStates

指定为下列之一的模型参数的初始状态:

  • Nx-by-1结构数组,其中Nx是状态数。该结构包含以下字段:

    描述 默认的
    的名字 状态的名称,指定为字符向量。 “十一”,在那里中的整数。[1, Nx]
    单位 状态单位,指定为字符向量。
    价值

    初始状态的初始值,指定为:

    • 有限实标量

    • 一个有限实1 ×向量,数据集中的实验数量是否用于估计

    最低

    初始状态的最小值,指定为实标量或1 × -相同大小的向量价值

    最低> =价值对于所有组件。

    无穷(大小(值))
    最大

    参数的最大值,指定为实标量或1 × -相同大小的向量价值

    价值< =最大对于所有组件。

    正(大小(值))
    固定 指定初始状态是否固定于其初始值,该初始值指定为布尔标量或1 × -相同大小的向量价值

    真正的(大小(值))

    这意味着,不估计初始状态。

  • []

    用字段的默认值创建一个结构的名字单位最低最大,固定

    价值被赋值0

  • 实有限Nx——- - - - - -矩阵(InitStates)。

    价值结构数组元素为InitStates (Ne)的行向量元素。最低最大,固定而且真正的相同大小的行向量InitStates (Ne)

  • 有限实向量的单元格数组,大小为1 × -{}(一样[])。

    用字段的默认值创建一个结构的名字单位最低最大,固定

类的子字段使用点表示法初始状态。例如,对于idnlgrey模型,初始状态通过M.InitialStates(我)和它的子场固定通过M.InitialStates .Fixed(我)

FileArgument

中指定的ODE文件(函数或mexo文件)的辅助变量文件名,指定为单元格数组。这些变量用作指定状态和/或输出方程的额外输入。
默认值:{}

SimulationOptions

一个指定模拟方法和相关选项的结构,包含以下字段:

描述 默认的
AbsTol

绝对容错。这个标量适用于状态向量的所有分量。

适用于:变步长求解器。

可分配值:一个正的实际值。

1 e-6
FixedStep

求解器使用的步长。

适用于:固定步长时间连续求解器。

可转让的价值观:

  • “汽车”—自动选择初始步骤。

  • 一个真实的值0 < FixedStep < = 1

“汽车”

自动选择初始步骤。

InitialStep

指定ODE求解器开始的初始步骤。

适用于:变步长、时间连续求解器。

可转让的价值观:

  • “汽车”—自动选择初始步骤。

  • 一个正的实值MinStep < = InitialStep < = MaxStep

“汽车”

自动选择初始步骤。

MaxOrder

指定数值微分公式(NDF)的顺序。

适用于:ode15s。

可赋值:1,2,3,4或5。

5
MaxStep

指定ODE求解器的最大时间步长。

适用于:变步长、时间连续求解器。

可转让的价值观:

  • “汽车”—自动选择时间步长。

  • 一个正的实数>MinStep

“汽车”

自动选择时间步长。

MinStep

指定ODE求解器的最小时间步长。

适用于:变步长、时间连续求解器。

可转让的价值观:

  • “汽车”—自动选择时间步长。

  • 一个正的实值<MaxStep

“汽车”

自动选择时间步长。

RelTol

适用于状态向量的所有分量的相对容错。每个积分步骤的估计误差满足|e(i)| <= max(RelTol*abs(x(i)), AbsTol(i)))

适用于:变步长、时间连续求解器。

可分配值:一个正的实际值。

1 e - 3

精度(0.1%)。

解算器

ODE(常微分/差分方程)求解状态空间方程。

  • 时间连续的变步长求解器idnlgrey模型:

    • “数值”龙格-库塔(4,5)求解非刚性问题。

    • “ode23”龙格-库塔(2,3)非刚性问题求解器。

    • “ode113”-非刚性问题的Adams-Bashforth-Moulton求解器。

    • “ode15s”-数值微分公式求解刚性问题。

    • “ode23s”-修改Rosenbrock求解僵硬的问题。

    • “ode23t”-用于中等刚性问题的梯形求解器。

    • “ode23tb”-隐式龙格库塔解决棘手问题。

  • 时间连续的固定步解idnlgrey模型:

    • “ode5”- Dormand-Prince求解器。

    • “ode4”-四阶龙格-库塔求解器。

    • “ode3”- Bogacki-Shampine求解器。

    • “ode2”- Heun或改进的欧拉求解器。

    • “ode1”-欧拉求解器。

  • 时间离散的固定步解idnlgrey模型:“FixedStepDiscrete”

  • 一般:“汽车”-自动选择一个以前的解决方案。

“汽车”

自动选择一个解算器。

报告

方法估计模型时,包含有关估计选项和结果的信息的摘要报告nlgreyest命令。使用报告查询模型的估计方法,包括:

  • 估算方法

  • 估计选项

  • 查询终止条件

  • 估计数据拟合

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

NLGR = idnlgrey(“dcmotor_m”(2, 1, 2), 1, 0.28, 0, 0, 0,“名字”直流电机的);nlgr.Report.OptionsUsed
Ans = []

如果你使用nlgreyest的字段来估计模型报告包含关于估计数据、选项和结果的信息。

负载(fullfile (matlabroot“工具箱”,“识别”,“iddemos”,“数据”,“dcmotordata”));z = iddata(y,u,0.1,'Name','DC-motor');nlgr = idnlgrey (dcmotor_m,(2, 1, 2)[1; 0.28],(0, 0), 0, '名称','直流电机');NLGR = nlgreyest(z, NLGR);nlgr.Report.OptionsUsed
nlgreyest命令的选项集:GradientOptions: [1x1 struct] EstimateCovariance: 1 Display: 'off'正则化:[1x1 struct] SearchMethod: 'auto' SearchOptions: [1x1 idoptions.search. search。lsqnonlin] OutputWeight:[]高级:[1x1 struct]

报告是只读属性。

有关此属性以及如何使用它的详细信息,请参见输出参数nlgreyest参考页及评估报告

TimeVariable

输入、输出和(当可用时)内部状态的自变量,指定为字符向量。

默认值:“t”

NoiseVariance

噪声方差(协方差矩阵)的模型创新e
可赋值是纽约——- - - - - -纽约矩阵。
通常由估计算法自动设置。

Ts

样品时间。Ts表示采样周期的正标量。属性指定的单位表示此值TimeUnit模型的属性。对于连续时间模型,Ts等于0(默认值)。

更改此属性不会对模型进行离散化或重新采样。

默认值:0

TimeUnit

时间变量的单位是采样时间Ts,以及模型中的任何时间延迟,指定为以下值之一:

  • “纳秒”

  • 微秒的

  • 的毫秒

  • “秒”

  • “分钟”

  • “小时”

  • “天”

  • “周”

  • “月”

  • “年”

更改此属性不会对其他属性产生影响,因此会改变整个系统行为。使用chgTimeUnit(控制系统工具箱)在时间单位之间转换而不修改系统行为。

默认值:“秒”

InputName

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

  • 字符向量——例如,对于单输入模型,“控制”

  • 字符向量的单元数组-用于多输入模型。

或者,使用自动向量展开为多输入模型分配输入名称。例如,如果sys是一个双输入模型,输入:

sys。InputName = 'controls';

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

当你估计一个模型使用iddata对象,数据,软件自动设置InputName数据。InputName

你可以用速记法u请参阅InputName财产。例如,sys.u等于sys。InputName

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

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

  • 提取MIMO系统的子系统

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

默认值:对于所有输入通道

InputUnit

输入通道单位,指定为下列之一:

  • 字符向量——例如,对于单输入模型,“秒”

  • 字符向量的单元数组-用于多输入模型。

使用InputUnit跟踪输入信号单位。InputUnit对系统行为没有影响。

默认值:对于所有输入通道

InputGroup

输入通道组。的InputGroup属性允许您将MIMO系统的输入通道分配到组中,并通过名称引用每个组。将输入组指定为结构。在这个结构中,字段名是组名,字段值是属于每个组的输入通道。例如:

sys.InputGroup.controls = [1 2];sys.InputGroup.noise = [3 5];

创建命名为控制而且噪音分别包括输入通道1、2和3、5。然后,您可以从控制输入到所有输出使用:

sys(:,“控制”)

默认值:结构,不带字段

OutputName

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

  • 字符矢量-用于单输出模型。例如,“测量”

  • 字符向量的单元数组-用于多输出模型。

或者,使用自动向量展开为多输出模型分配输出名称。例如,如果sys是一个双输出模型,输入:

sys。OutputName = 'measurements';

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

当你估计一个模型使用iddata对象,数据,软件自动设置OutputName数据。OutputName

你可以用速记法y请参阅OutputName财产。例如,sys.y等于sys。OutputName

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

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

  • 提取MIMO系统的子系统

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

默认值:对于所有输出通道

OutputUnit

输出通道单位,指定为下列之一:

  • 字符矢量-用于单输出模型。例如,“秒”

  • 字符向量的单元数组-用于多输出模型。

使用OutputUnit跟踪输出信号单元。OutputUnit对系统行为没有影响。

默认值:对于所有输出通道

OutputGroup

输出通道组。的OutputGroup属性允许您将MIMO系统的输出通道分配到组中,并通过名称引用每个组。将输出组指定为结构。在这个结构中,字段名是组名,字段值是属于每个组的输出通道。例如:

sys.OutputGroup.temperature = [1];sys.InputGroup.measurement = [3 5];

创建命名为温度而且测量分别包括输出通道1、3,5。的所有输入中提取子系统测量输出使用:

系统(“测量”,:)

默认值:结构,不带字段

的名字

系统名称,指定为字符向量。例如,“system_1”

默认值:

笔记

希望与系统关联的任何文本,存储为字符串或字符向量的单元格数组。属性存储您提供的任何数据类型。例如,如果sys1而且sys2系统模型都是动态的,你可以自己设置吗笔记属性如下:

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

默认值:(0×1的字符串)

用户数据

希望与系统关联的任何类型的数据,指定为任何MATLAB数据类型。

默认值:[]

输出参数

全部折叠

非线性灰盒模型,返回为idnlgrey对象。

更多关于

全部折叠

idnlgrey状态的定义

的状态idnlgrey模型是在存储模型结构的函数或mex文件中显式定义的。非线性灰盒模型的仿真和预测需要状态。使用findstates搜索用于模拟和预测的状态值sim卡预测,比较

请注意

属性配置状态的初始值InitialStates的属性idnlgrey模型。

版本历史

在R2007a中引入