idnlhw
Hammerstein-Wiener模型
描述
一个idnlhw
模型代表了Hammerstein-Wiener模型,该模型是由线性系统的输入和输出的线性函数和线性动态元素组成的非线性模型。这些非线性函数被称为非线性估计,或更笼统地说为映射对象.
下图说明了Hammerstein-Wiener模型的结构。
该软件计算Hammerstein-Wiener模型输出y在三个阶段:
它使用了输入非线性f变换输入向量u(t)转化为中间变量w(t)
输入非线性是静态的(无记忆函数,其中输出的值在给定的时间内t只取决于当时的输入值t.
您可以将输入非线性配置为sigmoid网络、小波网络、饱和、死区、分段线性函数、一维多项式或自定义网络。你也可以通过应用单位增益来消除输入非线性。
它使用w(t)作为动态线性块的输入,配置为传递函数B/F.线性块的输出为x(t).
它将x(t)利用输出非线性h.块的输出为y(t).
与输入非线性类似,输出非线性也是一个静态函数。你可以用与输入非线性相同的方式配置输出非线性。除了输入非线性选项外,还可以将输出非线性配置为高斯过程。
得到的Hammerstein-Wiener模型是idnlhw
存储所有模型数据的对象,包括输入和输出非线性的参数以及传递函数的系数。有关这些对象的更多信息,请参见非线性模型结构.
有关Hammerstein-Wiener模型的更多细节,包括计算阶段,请参见什么是Hammerstein-Wiener模型?.
为idnlhw
对象属性,看属性.
创建
您可以获取idnlhw
用两种方式之一表示反对。
语法
描述
指定模型直接
使用sys
= idnlhw (订单
、InputNonlinearity OutputNonlinearity)InputNonlinearity
而且OutputNonlinearity
分别为输入和输出非线性估计量。
使用线性模型初始化模型值
指定模型的输入和输出非线性估计量。sys
= idnlhw (LinModel
、InputNonlinearity OutputNonlinearity)
指定模型属性
属性的附加属性sys
= idnlhw (___,名称,值
)idnlhw
使用一个或多个模型结构名称,值
参数。可以将此语法与前面的任何输入参数组合一起使用。
输入参数
订单
- - - - - -线性子系统传递函数的阶数和时延
(nb nf nk)
正整数向量|(nb nf nk)
向量的矩阵
线性子系统传递函数的阶数和时延,指定为(nb nf nk)
向量。
的尺寸订单
:
对于SISO传递函数,
订单
是一个含有3个正整数的向量。注
就是0的个数加1,nf
是极数,和nk
是输入延迟。对于MIMO传递函数
nu
输入和ny
输出,订单
是一个矩阵的向量。注
,nf
,nk
是ny
——- - - - - -nu
矩阵的i j的传递函数的顺序和延迟j的Th输入我输出。
属性
nb、nf nk
- - - - - -模型订单和延迟
(nb nf nk)
正整数向量|(nb nf nk)
向量的矩阵
线性子系统传递函数的阶数和时延模型注
就是0的个数加1,nf
是极数,和nk
是输入延迟。
对于MIMO传递函数nu
输入和ny
输出,注
,nf
,nk
是ny
——- - - - - -nu
矩阵的i j的传递函数的顺序和延迟j的Th输入我输出。
B
- - - - - -线性分组分子
单元阵列
线性块分子多项式B的单元格数组ny
——- - - - - -nu
元素,ny
输出的数量和nu
是输入的数量。一个元素B {i, j}
行向量是否表示分子多项式j
th输入我
输出传递函数。元素包含nk
前导零,nk
是输入延迟数。
F
- - - - - -线性分组分母
单元阵列
线性分块分母多项式F的单元格数组ny
——- - - - - -nu
元素,ny
输出的数量和nu
是输入的数量。一个元素F {i, j}
行向量是否表示分母多项式j
th输入我
输出传递函数。
Bfree
- - - - - -选项来固定或释放B的参数
逻辑矩阵
控件的参数来修复或释放B的逻辑矩阵ny
——- - - - - -nu
元素,ny
输出的数量和nu
是输入的数量。一个元素Bfree (i, j)
行向量是否表示分子多项式j
th输入我
输出传递函数。Bfree (i, j) = false
导致输入之间的线性传递函数的分子j
和输出我
固定于B (i, j)}
.该软件尊重Bfree
规范仅当B多项式包含有限值。
Ffree
- - - - - -选项来固定或释放F的参数
逻辑矩阵
控件的参数来修复或释放F的逻辑矩阵ny
——- - - - - -nu
元素,ny
输出的数量和nu
是输入的数量。一个元素Ffree (i, j)
行向量是否表示分子多项式j
th输入我
输出传递函数。Ffree (i, j) = false
导致输入之间的线性传递函数的分子j
和输出我
固定于F (i, j)
.该软件尊重Ffree
规范仅当F多项式包含有限值。
InputNonlinearity
- - - - - -输入非线性估计量
idPiecewiseLinear
(默认)|“idSigmoidNetwork”
|“idWaveletNetwork”
|“idSaturation”
|idDeadZone
|“idPolynomial1D”
|“idUnitGain”
|非线性估计量|非线性估计器阵列
输入非线性估计器,指定为包含以下一个或多个字符串或映射对象的列数组。请注意,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非线性估计器数组。要为所有输入指定相同的非线性,请指定单个输入非线性估计器。
OutputNonlinearity
- - - - - -输出非线性估计量
idPiecewiseLinear
(默认)|“idSigmoidNetwork”
|“idWaveletNetwork”
|“idSaturation”
|idDeadZone
|“idPolynomial1D”
|“idGaussianProcess”
|“idUnitGain”
|非线性估计量|非线性估计器阵列
输出非线性估计器,指定为包含以下一个或多个字符串或映射对象的列数组。
“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非线性估计器数组。若要为所有输出指定相同的非线性,请指定单个输出非线性估计器。
LinearModel
- - - - - -线性模型
idpoly
对象
此属性是只读的。
线性模型在线性块的模型结构中,指定为idpoly
对象。
归一化
- - - - - -输入和输出数据的定心和缩放
结构(默认)
输入和输出的定心和缩放,指定为结构。如下表所示,结构中的每个字段都包含一个行向量,其长度等于任意一个模型输入的数量(nu)或模型输出(ny).
场 | 描述 | 默认的元素值 |
---|---|---|
InputCenter |
长度的行向量nu | 南 |
InputScale |
长度的行向量nu | 南 |
OutputCenter |
长度的行向量ny | 南 |
OutputScale |
长度的行向量ny | 南 |
为一个矩阵X
,带定心矢量C
和缩放向量年代
,软件计算归一化形式X
使用Xnorm =(得到)/ S
.
下图说明了Hammerstein-Wiener模型的归一化流程。
在这个图:
该算法采用定心和缩放参数进行归一化u(t),uN(t).
uN(t)为输入非线性、线性函数和输出非线性序列提供输入。序列的输出为yN(t).
该算法恢复原输出范围,产生y(t).
通常,软件在模型估计期间自动规范化数据,根据中的选项设置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]
TimeVariable
- - - - - -独立的时间变量
“t”
(默认)|特征向量
输入、输出和可用的内部状态的独立时间变量,指定为字符向量。
NoiseVariance
- - - - - -噪声方差
矩阵
模型创新的噪声方差(协方差矩阵)e.可赋值是纽约
——- - - - - -纽约
矩阵。该值通常由估计算法自动设置。
Ts
- - - - - -样品时间
1
(默认)|积极的标量
采样时间,指定为表示采样周期的正标量。属性指定的单位表示此值TimeUnit
模型的属性。
更改此属性不会对模型进行离散化或重新采样。
TimeUnit
- - - - - -时间变量的单位
“秒”
(默认)|“纳秒”
|微秒的
|的毫秒
|“分钟”
|“小时”
|“天”
|“周”
|“月”
|“年”
时间变量的单位是采样时间Ts
,以及模型中的任何时间延迟,指定为以下值之一:
“纳秒”
微秒的
的毫秒
“秒”
“分钟”
“小时”
“天”
“周”
“月”
“年”
更改此属性对其他属性没有影响,因此会更改整个系统行为。使用chgTimeUnit
(控制系统工具箱)在不修改系统行为的情况下在时间单位之间进行转换。
InputName
- - - - - -输入通道名称
''
对于所有的输入通道(默认)|特征向量|字符向量的单元格数组
输入通道名,指定为以下之一:
字符向量——例如,对于单输入模型,
“控制”
.字符向量的单元格数组-用于多输入模型。
Hammerstein-Wiener模型中的输入名称必须是有效的MATLAB®删除任何空格后的变量名。
或者,使用自动矢量展开来为多输入模型分配输入名称。例如,如果sys
为双输入模型,输入:
sys。InputName =“控制”;
输入名称自动展开为{“控制(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
- - - - - -输出通道名称
''
对于所有输出通道(默认)|特征向量|字符向量的单元格数组
输出通道名,指定为以下之一:
字符向量——用于单输出模型。例如,
“测量”
.字符向量的单元格数组-用于多输出模型。
在删除任何空格后,Hammerstein-Wiener模型中的输出名称必须是有效的MATLAB变量名称。
或者,使用自动矢量展开来为多个输出模型分配输出名称。例如,如果sys
为双输出模型,输入:
sys。OutputName =“测量”;
输出名称自动展开为{“测量(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。然后可以从所有输入中提取子系统测量
输出使用:
系统(“测量”,:)
的名字
- - - - - -系统名称
''
(默认)|特征向量
系统名称,指定为字符向量。例如,系统1的
.
笔记
- - - - - -笔记系统
0
——- - - - - -1
字符串(默认)|字符串|特征向量
希望与系统关联的任何文本,指定为字符串或字符向量的单元格数组。属性存储您提供的任何数据类型。例如,如果sys1
而且sys2
是动态系统模型,可以设置它们吗笔记
属性如下。
sys1。笔记=sys1有一个字符串。;sys2。笔记=sys2有一个字符向量。;sys1。笔记sys2。笔记
Ans = "sys1 has a string." Ans = " sys2 has a character vector. "
用户数据
- - - - - -与系统关联的数据
[]
(默认)|任何MATLAB数据类型
您想要与系统关联的任何数据,指定为任何MATLAB数据类型。
对象的功能
的对象函数的信息idnlhw
,请参阅Hammerstein-Wiener模型.
例子
创建一个默认非线性的Hammerstein-Wiener模型结构
建立具有特定输入输出非线性的Hammerstein-Wiener模型
M = idnlhw([2 2 1],“idSigmoidNetwork”,“idDeadZone”);
上述内容相当于:
M = idnlhw([2 2 1],“idsig”,“iddead”);
指定的非线性有一个默认配置。
建立Hammerstein-Wiener模型并配置非线性
m = idnlhw([2 2 1],idSigmoidNetwork(5),idDeadZone([-1,2]),“InputName”,“伏”,“OutputName”,“时间”);
创建一个维纳模型并估计模型参数
利用输出误差结构的输入-输出多项式模型建立Hammerstein-Wiener模型
构建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”,“控制”);
更多关于
版本历史
介绍了R2007aR2021b:使用以前的idnlarx
而且idnlhw
不建议映射对象名称。
从R2021b开始,映射对象(也称为非线性)在的非线性组件中使用idnlarx
而且idnlhw
对象已被重命名。下表列出了名称的更改。
Pre-R2021b名字 | R2021b名字 |
---|---|
wavenet |
idWaveletNetwork |
sigmoidnet |
idSigmoidNetwork |
treepartition |
idTreePartition |
customnet |
idCustomNetwork |
饱和 |
idSaturation |
死区 |
idDeadZone |
pwlinear |
idPiecewiseLinear |
poly1d |
idPolynomial1D |
unitgain |
idUnitGain |
线性 |
idLinear |
neuralnet |
idFeedforwardNetwork |
使用旧名称的脚本仍然正常运行,尽管它们会产生一个警告。考虑使用新名称以继续与新开发的特性和算法兼容。目前还没有排除使用这些对象名称的计划
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。