主要内容

idnlhw

Hammerstein-Wiener模型

描述

一个idnlhw模型代表了Hammerstein-Wiener模型,该模型是由线性系统的线性动态元素和非线性输入输出函数组成的非线性模型。这些非线性函数被称为非线性估计,或更一般地为映射对象

下图说明了Hammerstein-Wiener模型的结构。

输入非线性块在左边。线性块在中间。输出非线性块在右边。

该软件计算Hammerstein-Wiener模型输出y分三个阶段:

  1. 它使用输入非线性f对输入向量进行变换ut)转化为中间变量wt

    输入非线性是静态的(无记忆)函数,其中输出的值在给定的时间t只取决于当时的输入值t

    您可以配置输入非线性为sigmoid网络,小波网络,饱和,死区,分段线性函数,一维多项式,或自定义网络。你也可以通过应用单位增益来消除输入非线性。

  2. 它使用wt)作为动态线性块的输入,将其配置为传递函数B/F.线性块的输出为xt).

  3. 它将xt)利用输出非线性h.该块的输出为yt).

    与输入非线性相似,输出非线性是一个静态函数。您可以用与输入非线性相同的方式配置输出非线性。除了输入非线性选项外,还可以将输出非线性配置为高斯过程。

由此产生的Hammerstein-Wiener模型是idnlhw存储所有模型数据的对象,包括输入和输出非线性参数以及传递函数的系数。有关这些对象的详细信息,请参见非线性模型结构

有关Hammerstein-Wiener模型的更多细节,包括计算阶段,请参见什么是Hammerstein-Wiener模型?

idnlhw对象属性,请参见属性

创建

你可以获取idnlhw有两种方法。

  • 使用nlhw命令来构造idnlhw并对模型参数进行了估计。

    sys = nlhw(数据,订单,InputNL,输出tnl)

  • 使用idnlhw构造函数来创建Hammerstein-Wiener模型,然后估计模型参数nlhwpem.当您需要自定义模型结构时,例如当您想在执行估计之前将某些系数固定到它们的初始值时,此语法非常有用。

    sys = idnlhw(Orders,InputNL,OutputNL))

描述

直接指定型号

例子

sys= idnlhw (订单创建具有指定阶数的Hammerstein-Wiener模型,并使用分段线性函数作为输入和输出非线性。

例子

sys= idnlhw (订单、InputNonlinearity OutputNonlinearity)使用InputNonlinearity而且OutputNonlinearity分别作为输入和输出非线性估计量。

使用线性模型初始化模型值

例子

sys= idnlhw (LinModel使用线性模型LinModel为输入和输出非线性估计器指定模型阶数和默认分段线性函数。

sys= idnlhw (LinModel、InputNonlinearity OutputNonlinearity)指定模型的输入和输出非线性估计器。

指定模型属性

例子

sys= idnlhw (___名称,值属性的附加属性idnlhw模型结构使用一个或多个名称,值参数。您可以将此语法用于前面的任何输入参数组合。

输入参数

全部展开

线性子系统传递函数的阶数和时延,用a表示[nb nf nk]向量。

的尺寸订单

  • 对于SISO传递函数,订单是一个有3个正整数的向量。

    就是0的个数加1,nf是极点的数目,和nk是输入延迟。

  • 对于MIMO传递函数nu输入和ny输出,订单是矩阵的向量。

    nf,nkny——- - - - - -nu矩阵的i j第项指定的顺序和延迟传递函数从j的Th输入输出。

离散时间线性模型用于指定线性子系统,指定为下列之一:

  • 输出误差(OE)结构的输入输出多项式模型(idpoly

  • 状态空间模型(中的难点

  • 传递函数模型(idtf

通常,您使用oen4sid,或特遣部队

属性

全部展开

对线性子系统传递函数的阶数和延迟进行建模,其中就是0的个数加1,nf是极点的数目,和nk是输入延迟。

对于MIMO传递函数nu输入和ny输出,nf,nkny——- - - - - -nu矩阵的i j第项指定的顺序和延迟传递函数从j的Th输入输出。

线性块分子多项式B的单元格数组ny——- - - - - -nu元素,ny输出的数量和nu是输入的数量。一个元素B {i, j}行向量是否表示分子多项式jTh输入到输出传递函数。元素包含nk前导零,其中nk是输入延迟的数量。

线性块分母多项式F的单元格数组ny——- - - - - -nu元素,ny输出的数量和nu是输入的数量。一个元素F {i, j}行向量是否表示分母多项式jTh输入到输出传递函数。

属性的参数B多项式,指定为的逻辑矩阵ny——- - - - - -nu元素,ny输出的数量和nu是输入的数量。一个元素Bfree (i, j)行向量是否表示分子多项式jTh输入到输出传递函数。Bfree(i,j) = false导致输入之间的线性传递函数的分子j和输出固定于B (i, j)}.该软件尊重Bfree仅当B多项式包含有限值。

属性的参数F多项式,指定为的逻辑矩阵ny——- - - - - -nu元素,ny输出的数量和nu是输入的数量。一个元素Ffree (i, j)行向量是否表示分子多项式jTh输入到输出传递函数。Ffree(i,j) = false导致输入之间的线性传递函数的分子j和输出固定于F (i, j).该软件尊重Ffree仅当F多项式包含有限值。

输入非线性估计器,指定为包含以下一个或多个字符串或映射对象的列数组。请注意,idGaussianProcess可以作为输出非线性估计量,但不能作为输入非线性估计量。

“idPiecewiseLinear”idPiecewiseLinear对象 分段线性函数
“idSigmoidNetwork”idSigmoidNetwork对象 乙状结肠网络
“idWaveletNetwork”idWaveletNetwork对象 小波网络
“idSaturation”idSaturation对象 饱和
“idDeadZone”idDeadZone对象 死区
“idPolynomial1D”idPolynomial1D对象 一维多项式
idCustomNetwork对象 自定义网络-类似idSigmoidNetwork,但是使用用户定义的sigmoid函数替换。
“idUnitGain”[]idUnitGain对象 单位增益。有效消除非线性阻塞。

例如,指定一个字符向量“idSigmoidNetwork”,使用默认设置创建映射对象。或者,你可以用另外两种方式指定非线性估计器属性:

  • 使用参数创建非线性函数以修改默认属性。

    InputNL = idSigmoidNetwork(15)
  • 首先创建一个默认非线性函数,然后使用点表示法修改属性。

    InputNL = idSigmoidNetwork;InputNL。Nu米berOfUnits = 15

nu输入通道,您可以通过设置为每个输入通道单独指定非线性估计器InputNL到一个nu非线性估计器的-by-1数组。若要为所有输入指定相同的非线性,请指定单个输入非线性估计器。

输出非线性估计器,指定为包含以下一个或多个字符串或映射对象的列数组。

“idPiecewiseLinear”idPiecewiseLinear对象 分段线性函数
“idSigmoidNetwork”idSigmoidNetwork对象 乙状结肠网络
“idWaveletNetwork”idWaveletNetwork对象 小波网络
“idSaturation”idSaturation对象 饱和
“idDeadZone”idDeadZone对象 死区
“idPolynomial1D”idPolynomial1D对象 一维多项式
“idGaussianProcess”idGaussianProcess对象 高斯过程回归模型(需要统计和机器学习工具箱™)
idCustomNetwork对象 自定义网络-类似idSigmoidNetwork,但是使用用户定义的sigmoid函数替换。
“idUnitGain”[]idUnitGain对象 单位增益。有效消除非线性阻塞。

例如,指定一个字符向量“idSigmoidNetwork”,使用默认设置创建映射对象。或者,你可以用另外两种方式指定非线性估计器属性:

  • 使用参数创建非线性函数以修改默认属性。

    NL = idSigmoidNetwork(15)
  • 首先创建一个默认非线性函数,然后使用点表示法修改属性。

    outputNL = idSigmoidNetwork;OutputNL。Nu米berOfUnits = 15

ny输出通道,您可以通过设置为每个输出通道单独指定非线性估计器OutputNL到一个ny非线性估计器的-by-1数组。若要为所有输出指定相同的非线性,请指定单个输出非线性估计器。

此属性是只读的。

线性模型在线性块的模型结构中,指定为idpoly对象。

输入和输出定心和缩放,指定为结构。如下表所示,结构中的每个字段包含一个行向量,其长度等于任意一个模型输入的数量(nu)或模型输出(ny).

描述 默认元素值
InputCenter 长度的行向量nu
InputScale 长度的行向量nu
OutputCenter 长度的行向量ny
OutputScale 长度的行向量ny

对于一个矩阵X,带定心矢量C缩放向量年代,软件计算的归一化形式X使用Xnorm = (X-C)./S

下图说明了Hammerstein-Wiener模型的规范化流程。

归一化流程图由左至右依次为输入归一化、输入非线性、线性函数、输出非线性、输出归一化

在该图中:

  1. 该算法利用定心和缩放参数进行归一化ut),uNt).

  2. uNt)为输入非线性、线性函数和输出非线性序列提供输入。序列的输出为yNt).

  3. 该算法恢复原来的输出范围,产生yt).

通常,软件在模型估计期间自动规范化数据,根据中的选项设置nlhwOptions正常化而且NormalizationOptions.您还可以通过指定向量中的值直接分配居中和缩放值,如上表所述。你分配的值必须是实数和有限的。这种方法很有用,例如,当您使用表示与原始估计数据的工作点不同的工作点的输入来模拟模型时。您可以独立地为任何字段分配值。该软件将估计任何未分配字段的值().

此属性是只读的。

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

  • 估算方法

  • 估计选项

  • 查询终止条件

  • 估计数据拟合

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

M = idnlhw([2 2 1]);m.Report.OptionsUsed
Ans = []

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

负载iddata1;M = nlhw(z1,[2 2 1],[],“pwlinear”);m.Report.OptionsUsed
nlhw命令的选项集:InitialCondition: 'zero'显示:'off'正则化:[1x1 struct] SearchMethod: 'auto' SearchOption: [1x1 idoptions.search. search. txt]高级:[1x1 struct]

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

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

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

采样时间,指定为表示采样周期的正标量。属性指定的单位表示此值TimeUnit模型的属性。

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

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

  • “纳秒”

  • 微秒的

  • 的毫秒

  • “秒”

  • “分钟”

  • “小时”

  • “天”

  • “周”

  • “月”

  • “年”

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

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

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

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

Hammerstein-Wiener模型中的输入名称必须是有效的MATLAB®删除任何空格后的变量名称。

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

sys。InputName = 'controls';

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

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

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

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

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

  • 提取MIMO系统的子系统

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

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

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

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

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

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

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

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

sys(:,“控制”)

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

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

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

Hammerstein-Wiener模型中的输出名称在删除任何空格后必须是有效的MATLAB变量名称。

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

sys。OutputName = 'measurements';

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

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

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

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

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

  • 提取MIMO系统的子系统

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

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

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

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

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

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

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

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

系统(“测量”,:)

系统名称,指定为字符向量。例如,系统1的

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

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

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

对象的功能

的对象函数的信息idnlhw,请参阅Hammerstein-Wiener模型

例子

全部折叠

创建一个Hammerstein-Wiener模型而且nf= 2和nk= 1。

M = idnlhw([2 2 1]);

具有分段线性输入和输出非线性。

M = idnlhw([2 2 1],“idSigmoidNetwork”“idDeadZone”);

以上等价于:

M = idnlhw([2 2 1],“idsig”“iddead”);

指定的非线性有一个默认配置。

m = idnlhw([2 2 1],idSigmoidNetwork(5),idDeadZone([-1,2]),“InputName”“伏”“OutputName”“时间”);

创建一个Wiener模型(无输入非线性)。

M = idnlhw([2 2 1],[],“idSaturation”);

估计模型。

负载iddata1;M = nlhw(z1, M);

构造OE结构的投入产出多项式模型。

B = [0.8 1];F = [1 -1.2 0.5];线性模型= idpoly(1,B,1,1,F,“t”, 0.1);

以OE模型为线性分量,构造Hammerstein-Wiener模型。

m1 = idnlhw(线性模型,“idSaturation”[],“InputName”“控制”);

更多关于

全部展开

版本历史

在R2007a中引入

全部展开