nlhw
估计Hammerstein-Wiener模型
语法
描述
估计Hammerstein-Wiener模型
指定sys
= nlhw (数据
,订单
,InputNonlinearity
,OutputNonlinearity
)InputNL
而且OutputNL
分别作为输入和输出非线性估计量。
指定线性模型
指定sys
= nlhw (数据
,LinModel
,InputNonlinearity
,OutputNonlinearity
)InputNonlinearity
而且OutputNonlinearity
分别作为输入和输出非线性估计量。
改进现有模型
指定的选项
使用选项集指定其他模型估计选项sys
= nlhw (___,选项
)选项
你使用nlhwOptions
.使用选项
使用前面的任何语法。
例子
估计Hammerstein-Wiener模型
负载iddata3M1 = nlhw(z3,[4 2 1]);
估计具有饱和的Hammerstein模型
加载数据。
负载twotankdata;Z = iddata(y,u,0.2,“名字”,“双坦克系统”);Z1 = z(1:1000);
创建一个饱和度对象,下限为0,上限为5。
InputNL = idSaturation(“LinearInterval”[0 5]);
无输出非线性的估计模型。
m = nlhw(z1,[2 3 0],InputNL,[]);
利用自定义网络非线性估计Hammerstein-Wiener模型
生成自定义网络非线性需要定义用户定义的单元函数。
定义单元函数并将其保存为gaussunit.m
.
函数[f,g,a] = gaussunit(x)%自定义单位函数非线性。%版权所有The MathWorks, Inc.F = exp(-x.*x);如果Nargout >1 g = -2*x.*f;A = 0.2;结束
属性创建自定义网络非线性gaussunit
函数。
H = @gaussunit;CNet = idCustomNetwork(H);
加载估计数据。
负载twotankdata;Z = iddata(y,u,0.2,“名字”,“双坦克系统”);Z1 = z(1:1000);
使用自定义网络估计Hammerstein-Wiener模型。
m = nlhw(z1,[5 1 3],CNet,[]);
利用OE结构的投入产出多项式模型估计默认Hammerstein-Wiener模型
估计线性OE模型。
负载throttledata.matTr = getTrend(ThrottleData);Tr.OutputOffset = 15;DetrendedData = dettrend (ThrottleData, Tr);opt = oeOptions(“焦点”,“模拟”);线性模型= oe(DetrendedData,[1 2 1],opt);
用OE模型作为Hammerstein-Wiener模型的线性分量,饱和度作为输出非线性,估计Hammerstein-Wiener模型。
sys = nlhw(ThrottleData,LinearModel,[],idSaturation);
估计Hammerstein-Wiener模型使用idnlhw
首先定义模型属性
加载估计数据。
负载iddata1
构造一个Hammerstein-Wiener模型idnlhw
定义模型属性B
而且F
.
Sys0 = idnlhw([2,2,0],[],“idWaveletNetwork”);sys0。B{1} = [0.8,1]; sys0.F{1} = [1,-1.2,0.5];
估计模型。
Sys = nlhw(z1,sys0);
估计Hammerstein-Wiener模型使用nlhw
定义模型属性B
而且F
.
Sys2 = nlhw(z1,[2,2,0],[],“idWaveletNetwork”,“B”{[0.8, 1]},“F”, {1, -1.2, 0.5});
比较两个估计的模型,看看它们是等价的。
比较(z1,系统,‘g’sys2,“r——”);
的连续调用改进Hammerstein-Wiener模型nlhw
估计Hammerstein-Wiener模型。
负载iddata3Sys = nlhw(z3,[4 2 1],“idSigmoidNetwork”,“idWaveletNetwork”);
细化模型,sys
.
Sys = nlhw(z3, Sys);
使用估计选项集估计Hammerstein-Wiener模型
为创建估计选项集nlhw
查看估计进度,使用Levenberg-Marquardt搜索方法,并设置最大迭代步长为50
.
opt = nlhwOptions;opt.Display =“上”;opt.SearchMethod =“lm”;opt.SearchOptions.MaxIterations = 50;
加载数据并估计模型。
负载iddata3sys = nlhw(z3,[4 2 1],idSigmoidNetwork, idpiecewislinear,opt);
输入参数
数据
- - - - - -估计的数据
时间表|单元格时间表数组|数值矩阵对|单元格数组对矩阵|iddata
对象
统一采样的估计数据,如以下部分所述。
时间表
指定数据
作为一个时间表
它使用了一个规则间隔的时间向量。tt
包含表示输入和输出通道的变量。对于多实验数据,tt
单元格数组的时间表的长度不
,在那里不
是实验的数量吗
该软件确定输入和输出通道的数量,用于估计从维度的顺序订单
.输入/输出通道的选择取决于是否“InputName”
而且“OutputName”
指定名称-值参数。
如果
“InputName”
而且“OutputName”
没有指定,那么软件使用第一种ν的变量tt
作为输入和下一个纽约的变量tt
作为输出。如果
“InputName”
而且“OutputName”
,然后软件使用指定的变量。指定的输入和输出名称的个数必须与ν而且纽约.对于可以估计没有输入的时间序列模型的函数,
“InputName”
不需要指定。
逗号分隔的矩阵对
指定数据
作为一对以逗号分隔的实值矩阵,包含均匀采样的输入和输出时域信号值。对于多实验数据,使用矩阵单元数组。当您指定基于矩阵的数据时,软件假定采样时间为1秒。您可以通过设置属性更改估计后的采样时间sys。Ts
.
对于SISO系统,请指定
数据
作为一对N年代-by-1实值矩阵,包含均匀采样的输入和输出时域信号值。在这里,N年代是样本的数量。对于MIMO系统,请指定
u
,y
作为一个输入/输出矩阵对,具有以下维度:u
- - - - - -N年代——- - - - - -Nu,在那里Nu是输入的数量。y
- - - - - -N年代——- - - - - -Ny,在那里Ny是输出的数量。
对于多实验数据,请指定
u
,y
作为一对1 × -Ne单元格数组,其中Ne是实验的次数。所有实验的采样次数必须匹配。
数据对象
一种估计数据对象,指定为时域iddata
对象,该对象包含统一采样的输入和输出值。软件默认将模型的采样时间设置为估计数据的采样时间。
对于多实验数据,所有实验的样本次数和样本间行为必须匹配。
有关使用估计数据类型的详细信息,请参见系统标识工具箱中的数据类型.
订单
- - - - - -线性子系统传递函数的阶和延迟
[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输入我输出。
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。νmberOfUnits = 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。νmberOfUnits = 15
为ny
输出通道,您可以通过设置为每个输出通道单独指定非线性估计器OutputNL
到一个ny
非线性估计器的-by-1数组。若要为所有输出指定相同的非线性,请指定单个输出非线性估计器。
sys0
- - - - - -Hammerstein-Wiener模型
idnlhw
对象
Hammerstein-Wiener模型,指定为idnlhw
对象。sys0
可以是:
以前创建的模型
idnlhw
指定模型属性。以前估计的模型
nlhw
,您希望使用新的估计数据集进行更新。你也可以提炼
sys0
使用原始的估计数据集。如果先前的估计在数值搜索停留在代价函数的局部最小值时停止,则使用初始化
首先随机化的参数sys0
.看到sys0.Report.Termination
搜索停止条件。使用初始化
并不能保证在进一步细化时得到更好的解决方案。
选项
- - - - - -估计选项
nlhwOptions
选项设置
Hammerstein-Wiener模型识别的估计选项,指定为nlhwOptions
选项设置。可用的选项包括:
搜索选项
归一化选项
正则化选项
输出参数
sys
-估计Hammerstein-Wiener模型
idnlhw
对象
估计的Hammerstein-Wiener模型,返回为idnlhw
对象。使用指定的模型阶数、输入和输出非线性估计器和估计选项来估计模型。
有关所使用的估计结果和选项的信息存储在报告
模型的属性。报告
具有以下字段:
报告字段 | 描述 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
状态 |
模型状态的总结,表明模型是通过构造创建的还是通过估计获得的。 |
||||||||||||||||||
方法 |
使用估计命令。 |
||||||||||||||||||
适合 |
估计的定量评估,作为结构返回。看到损失函数和模型质量度量有关这些质量度量的更多信息。该结构有以下字段:
|
||||||||||||||||||
参数 |
模型参数估计值。 |
||||||||||||||||||
OptionsUsed |
用于估计的选项集。如果没有配置自定义选项,则这是一组默认选项。看到 |
||||||||||||||||||
RandState |
估计开始时随机数流的状态。空的, |
||||||||||||||||||
DataUsed |
用于估计的数据的属性,作为具有以下字段的结构返回。
|
||||||||||||||||||
终止 |
用于预测误差最小化的迭代搜索的终止条件,作为具有以下字段的结构返回:
对于不需要数值搜索优化的估计方法,请使用 |
有关更多信息,请参见评估报告.
版本历史
在R2007a中引入R2022b:时域估计数据以时间表和矩阵的形式接受
大多数估计、验证、分析和效用函数现在都接受时域输入/输出数据,其形式是包含输入和输出数据的单个时间表或分别包含输入和输出数据的一对矩阵。这些功能继续被接受iddata
对象也可以作为数据源,用于时域和频域数据。
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 |
使用旧名称的脚本仍然正常运行,尽管它们会产生一个警告。考虑使用新名称以继续兼容新开发的特性和算法。目前还没有排除使用这些对象名称的计划
R2018a:的高级选项已弃用SearchOptions
当SearchMethod
是“lsqnonlin”
规范的lsqnonlin
类估算时调用并行处理的选项lsqnonlin
搜索方法,或求解器,在优化工具箱™。
Matlabコマンド
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。