主要内容

idnlhw

Hammerstein-Wiener模型

语法

sys = idnlhw(命令)
sys = idnlhw(Orders,InputNL,OutputNL)
sys = idnlhw(Orders,InputNL,OutputNL,Name,Value)
sys = idnlhw(LinModel)
sys = idnlhw(LinModel,InputNL,OutputNL)
sys = idnlhw(LinModel,InputNL,OutputNL,Name,Value)

描述

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

sys= idnlhw (订单InputNLOutputNL使用InputNL而且OutputNL分别作为输入和输出非线性估计量。

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

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

sys= idnlhw (LinModelInputNLOutputNL指定模型的输入和输出非线性估计器。

sys= idnlhw (LinModelInputNLOutputNL名称,值属性的附加属性idnlhw模型结构使用一个或多个名称,值对参数。

对象描述

idnlhw表示Hammerstein-Wiener模型。的Hammerstein-Wiener结构表示具有输入-输出非线性的线性模型。

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

你也可以使用idnlhw构造函数来创建Hammerstein-Wiener模型,然后估计模型参数nlhw

idnlhw对象属性,请参见属性

例子

全部折叠

创建一个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(“num”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”“控制”);

输入参数

全部折叠

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

的尺寸订单

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

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

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

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

输入静态非线性估计器,指定为下列之一。

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

例如,指定一个字符向量“idSigmoidNetwork”,使用默认设置创建非线性估计器对象。使用对象表示法来配置非线性估计器的属性。

InputNL = idWaveletNetwork;InputNL。NumberOfUnits = 10;

或者,使用带有名称-值对参数的相关输入非线性估计函数。

InputNL = idWaveletNetwork(“NumberOfUnits”10);

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

InputNL = [idSigmoidNetwork(“NumberofUnits”5);idDeadZone ([1,2]))
若要为所有输入指定相同的非线性,请指定单个输入非线性估计器。

输出静态非线性估计器,指定为以下之一:

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

指定字符向量将创建具有默认设置的非线性估计器对象。使用对象表示法来配置非线性估计器的属性。

OutputNL = idSigmoidNetwork;OutputNL。NumberOfUnits = 10;

或者,使用带有名称-值对参数的相关输入非线性估计函数。

OutputNL = idSigmoidNetwork(“NumberOfUnits”10);

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

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

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

  • 无干扰分量的状态空间模型(中的难点K0

  • 传递函数模型(idtf

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

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

使用名称,值参数来指定额外的参数属性idnlhw模型创建期间的模型。例如,m = idnlhw([2 3 1],' idpiecewislinear ',' idwavelet ','InputName','Volts','Ts',0.1)创建一个idnlhw带输入非线性估计器的模型对象“idPiecewiseLinear”,输出非线性估计器“idWaveletNetwork”,输入名称的采样时间0.1秒。

属性

idnlhw对象属性包括:

Nb nf nk

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

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

B

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

F

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

Bfree

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

Ffree

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

InputNonlinearity

输入非线性估计器,指定为以下之一:

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

指定字符向量将创建具有默认设置的非线性估计器对象。使用对象表示法来配置非线性估计器的属性。

input非线性= id小波网络;InputNonlinearity。NumberOfUnits = 10;

或者,使用带有名称-值对参数的相关输入非线性估计函数。

input非线性= id小波网络(“NumberOfUnits”10);

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

默认值:“pwlinear”

OutputNonlinearity

输出非线性估计器,指定为以下之一:

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

指定字符向量将创建具有默认设置的非线性估计器对象。使用对象表示法来配置非线性估计器的属性。

output非线性= idSigmoidNetwork;OutputNonlinearity。NumberOfUnits = 10;

或者,使用带有名称-值对参数的相关输入非线性估计函数。

输出非线性= idSigmoidNetwork(“NumberOfUnits”10);

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

默认值:“pwlinear”

LinearModel

线性模型在线性块的模型结构中,表示为idpoly对象。此属性为只读。

报告

方法估计模型时,包含有关估计选项和结果的信息的摘要报告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参考页及评估报告

TimeVariable

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

默认值:“t”

NoiseVariance

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

Ts

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

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

默认值:1

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®数据类型。

默认值:[]

输出参数

全部折叠

Hammerstein-Wiener模型,返回作为idnlhw对象。该模型是使用指定的模型顺序和延迟、输入和输出非线性估计器和属性创建的。

更多关于

全部折叠

Hammerstein-Wiener模型结构

下图代表了Hammerstein-Wiener模型的结构:

在那里,

  • f转换输入数据的是非线性函数吗ut),wt) =fut))

    wt)是一个内部变量,是Input Nonlinearity块的输出,与Input nonlinear块的维数相同ut).

  • B / F变换是线性传递函数吗wt),xt) = (B / Fwt

    xt),是一个内部变量,是Linear块的输出,与yt).

    B而且F类似于线性输出误差模型中的多项式。有关输出错误模型的更多信息,请参见什么是多项式模型?

    纽约输出和ν输入,线性块为传递函数矩阵,包含项:

    B j F j

    在哪里j1、2、…,纽约而且1、2、…,怒

  • h映射线性块输出的是非线性函数吗xt)输入系统输出yt),yt) =hxt))

因为f作用于线性块的输入端口,此函数称为输入非线性.同样的,因为h作用于线性块的输出端口,此函数称为输出非线性.如果您的系统包含多个输入和输出,则必须定义函数f而且h对于每个输入和输出信号。您不必在模型结构中同时包含输入和输出非线性。当一个模型只包含输入非线性时f,叫做a汉默斯坦模型。类似地,当模型只包含输出非线性时h,叫做a维纳模型。

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

  1. 计算wt) =fut))。

    wt)是线性传递函数的输入B / F

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

    您可以将输入非线性配置为sigmoid网络、小波网络、饱和、死区、分段线性函数、一维多项式或自定义网络。您还可以删除输入非线性。

  2. 计算线性块的输出wt)和初始条件:xt) = (B / Fwt).

    可以通过指定分子的阶数来配置线性块B和分母F

  3. 通过转换线性块的输出计算模型输出xt)使用非线性函数h作为yt) =hxt))。

    与输入非线性相似,输出非线性是一个静态函数。您可以用与输入非线性相同的方式配置输出非线性。您还可以删除输出非线性,例如yt) =xt).

得到的模型如下idnlhw存储所有模型数据的对象,包括模型参数和非线性估计器。有关这些对象的详细信息,请参见非线性模型结构

的定义idnlhw

Hammerstein-Wiener模型的状态对应于模型结构中线性块的状态。线性块包含模型的所有动态元素。如果线性块不是状态空间结构,则将其状态定义为模型的状态海量存储系统(Mss)中,在那里Mss = idss(模型。线性模型)而且模型idnlhw对象。

Hammerstein-Wiener模型的模拟、预测和线性化需要状态。要指定初始状态:

兼容性的考虑

全部展开

不建议从R2021b开始

在R2007a中引入