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]
矩阵的向量
线性子系统传递函数的阶数和时延,用a表示[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
非线性估计器的-by-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”
,使用默认设置创建映射对象。或者,你可以用另外两种方式指定非线性估计器属性:
使用参数创建非线性函数以修改默认属性。
NL = idSigmoidNetwork(15)
首先创建一个默认非线性函数,然后使用点表示法修改属性。
outputNL = idSigmoidNetwork;OutputNL。Nu米berOfUnits = 15
为ny
输出通道,您可以通过设置为每个输出通道单独指定非线性估计器OutputNL
到一个ny
非线性估计器的-by-1数组。若要为所有输出指定相同的非线性,请指定单个输出非线性估计器。
LinearModel
- - - - - -线性模型
idpoly
对象
此属性是只读的。
线性模型在线性块的模型结构中,指定为idpoly
对象。
归一化
- - - - - -输入和输出数据的定心和缩放
结构(默认)
输入和输出定心和缩放,指定为结构。如下表所示,结构中的每个字段包含一个行向量,其长度等于任意一个模型输入的数量(nu)或模型输出(ny).
场 | 描述 | 默认元素值 |
---|---|---|
InputCenter |
长度的行向量nu | 南 |
InputScale |
长度的行向量nu | 南 |
OutputCenter |
长度的行向量ny | 南 |
OutputScale |
长度的行向量ny | 南 |
对于一个矩阵X
,带定心矢量C
缩放向量年代
,软件计算的归一化形式X
使用Xnorm = (X-C)./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'显示:'off'正则化:[1x1 struct] SearchMethod: 'auto' SearchOption: [1x1 idoptions.search. search. txt]高级:[1x1 struct]
TimeVariable
- - - - - -独立时间变量
“t”
(默认)|特征向量
用于输入、输出和(当可用时)内部状态的独立时间变量,指定为字符向量。
NoiseVariance
- - - - - -噪声方差
矩阵
噪声方差(协方差矩阵)的模型创新e.可赋值是纽约
——- - - - - -纽约
矩阵。这个值通常由估计算法自动设置。
Ts
- - - - - -样品时间
1
(默认)|积极的标量
采样时间,指定为表示采样周期的正标量。属性指定的单位表示此值TimeUnit
模型的属性。
更改此属性不会对模型进行离散化或重新采样。
TimeUnit
- - - - - -时间变量单位
“秒”
(默认)|“纳秒”
|微秒的
|的毫秒
|“分钟”
|“小时”
|“天”
|“周”
|“月”
|“年”
时间变量的单位是采样时间Ts
,以及模型中的任何时间延迟,指定为以下值之一:
“纳秒”
微秒的
的毫秒
“秒”
“分钟”
“小时”
“天”
“周”
“月”
“年”
更改此属性不会对其他属性产生影响,因此会改变整个系统行为。使用chgTimeUnit
(控制系统工具箱)在时间单位之间转换而不修改系统行为。
InputName
- - - - - -输入通道名称
”
对于所有输入通道(默认)|特征向量|字符向量的单元格数组
输入通道名称,指定为以下之一:
字符向量——例如,对于单输入模型,
“控制”
.字符向量的单元数组-用于多输入模型。
Hammerstein-Wiener模型中的输入名称必须是有效的MATLAB®删除任何空格后的变量名称。
或者,使用自动向量展开为多输入模型分配输入名称。例如,如果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
- - - - - -输出通道名称
”
对于所有输出通道(默认)|特征向量|字符向量的单元格数组
输出通道名称,指定为以下之一:
字符矢量-用于单输出模型。例如,
“测量”
.字符向量的单元数组-用于多输出模型。
Hammerstein-Wiener模型中的输出名称在删除任何空格后必须是有效的MATLAB变量名称。
或者,使用自动向量展开为多输出模型分配输出名称。例如,如果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。的所有输入中提取子系统测量
输出使用:
系统(“测量”,:)
的名字
- - - - - -系统名称
”
(默认)|特征向量
系统名称,指定为字符向量。例如,系统1的
.
笔记
- - - - - -系统说明
0
——- - - - - -1
字符串(默认)|字符串|特征向量
希望与系统关联的任何文本,指定为字符串或字符向量的单元格数组。属性存储您提供的任何数据类型。例如,如果sys1
而且sys2
系统模型都是动态的,你可以自己设置吗笔记
属性如下。
sys1。笔记=sys1有一个字符串。;sys2。笔记=sys2有一个字符向量;sys1。笔记sys2。笔记
Ans = "sys1有一个字符串" Ans = " sys2有一个字符向量"
用户数据
- - - - - -要与系统关联的数据
[]
(默认)|任意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”,“时间”);
创建一个维纳模型并估计模型参数
创建一个Wiener模型(无输入非线性)。
M = idnlhw([2 2 1],[],“idSaturation”);
估计模型。
负载iddata1;M = nlhw(z1, M);
利用输出误差结构的输入输出多项式模型建立Hammerstein-Wiener模型
构造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中引入R2021b:以前的使用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 |
使用旧名称的脚本仍然正常运行,尽管它们会产生一个警告。考虑使用新名称以继续兼容新开发的特性和算法。目前还没有排除使用这些对象名称的计划
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。