主要内容

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 OutputNL)

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

    sys = idnlhw(订单、InputNL OutputNL))

描述

指定模型直接

例子

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

例子

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

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

例子

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

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

指定模型属性

例子

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

输入参数

全部展开

线性子系统传递函数的阶数和时延,指定为(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- × 1非线性估计器数组。要为所有输入指定相同的非线性,请指定单个输入非线性估计器。

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

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

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

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

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

    outputNL = idSigmoidNetwork;OutputNL。Nu米berOfUnits = 15

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

此属性是只读的。

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

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

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

为一个矩阵X,带定心矢量C和缩放向量年代,软件计算归一化形式X使用Xnorm =(得到)/ 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' Display: 'off' Regularization: [1x1 struct] SearchMethod: 'auto' SearchOption: [1x1 idoptions.search. search. properties。高级:[1x1 struct]

有关此属性和如何使用它的更多信息,请参见输出参数nlhw参考页面和评估报告

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

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

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

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

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

  • “纳秒”

  • 微秒的

  • 的毫秒

  • “秒”

  • “分钟”

  • “小时”

  • “天”

  • “周”

  • “月”

  • “年”

更改此属性对其他属性没有影响,因此会更改整个系统行为。使用chgTimeUnit(控制系统工具箱)在不修改系统行为的情况下在时间单位之间进行转换。

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

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

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

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

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

sys。InputName =“控制”;

输入名称自动展开为{“控制(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 =“测量”;

输出名称自动展开为{“测量(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 has a string." Ans = " sys2 has a character vector. "

您想要与系统关联的任何数据,指定为任何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”“时间”);

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

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

估计模型。

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

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

B = [0.8 1];F = [1 -1.2 0.5];LinearModel = idpoly (F 1, B, 1, 1,“t”, 0.1);

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

m1 = idnlhw (LinearModel,“idSaturation”[],“InputName”“控制”);

更多关于

全部展开

版本历史

介绍了R2007a

全部展开

Baidu
map