主要内容

nlhw

估计Hammerstein-Wiener模型

描述

估计Hammerstein-Wiener模型

例子

sys= nlhw (数据订单使用估计数据、模型顺序和延迟以及默认分段线性函数作为输入和输出非线性估计器创建和估计Hammerstein-Wiener模型。数据可以是a的形式时间表、逗号分隔的一对数字矩阵或数据对象。

例子

sys= nlhw (数据订单InputNonlinearityOutputNonlinearity指定InputNL而且OutputNL分别作为输入和输出非线性估计量。

指定线性模型

例子

sys= nlhw (数据LinModel使用线性模型来指定线性块系数,并为输入和输出非线性估计器默认分段线性函数。

例子

sys= nlhw (数据LinModelInputNonlinearityOutputNonlinearity指定InputNonlinearity而且OutputNonlinearity分别作为输入和输出非线性估计量。

改进现有模型

例子

sys= nlhw (数据sys0改进或估计Hammerstein-Wiener模型的参数,sys0,使用估计数据。

使用此语法:

  • 更新先前估计模型的参数,以提高对估计数据的拟合。在这种情况下,估计算法使用的参数sys0作为最初的猜测。

  • 方法估计先前创建的模型的参数idnlhw构造函数。在进行估计之前,您可以使用点表示法配置模型属性。

指定的选项

例子

sys= nlhw (___选项使用选项集指定其他模型估计选项选项你使用nlhwOptions.使用选项使用前面的任何语法。

例子

全部折叠

负载iddata3M1 = nlhw(z3,[4 2 1]);

加载数据。

负载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,[]);

生成自定义网络非线性需要定义用户定义的单元函数。

定义单元函数并将其保存为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模型。

负载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);

加载估计数据。

负载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——”);

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象表示验证数据(y1), sys: 69.69%, sys2: 69.69%。

估计Hammerstein-Wiener模型。

负载iddata3Sys = nlhw(z3,[4 2 1],“idSigmoidNetwork”“idWaveletNetwork”);

细化模型,sys

Sys = nlhw(z3, Sys);

为创建估计选项集nlhw查看估计进度,使用Levenberg-Marquardt搜索方法,并设置最大迭代步长为50

opt = nlhwOptions;opt.Display =“上”;opt.SearchMethod =“lm”;opt.SearchOptions.MaxIterations = 50;

加载数据并估计模型。

负载iddata3sys = nlhw(z3,[4 2 1],idSigmoidNetwork, idpiecewislinear,opt);

输入参数

全部折叠

统一采样的估计数据,如以下部分所述。

时间表

指定数据作为一个时间表它使用了一个规则间隔的时间向量。tt包含表示输入和输出通道的变量。对于多实验数据,tt单元格数组的时间表的长度,在那里是实验的数量吗

该软件确定输入和输出通道的数量,用于估计从维度的顺序订单.输入/输出通道的选择取决于是否“InputName”而且“OutputName”指定名称-值参数。

  • 如果“InputName”而且“OutputName”没有指定,那么软件使用第一种ν的变量tt作为输入和下一个纽约的变量tt作为输出。

  • 如果“InputName”而且“OutputName”,然后软件使用指定的变量。指定的输入和输出名称的个数必须与ν而且纽约

  • 对于可以估计没有输入的时间序列模型的函数,“InputName”不需要指定。

逗号分隔的矩阵对

指定数据作为一对以逗号分隔的实值矩阵,包含均匀采样的输入和输出时域信号值。对于多实验数据,使用矩阵单元数组。当您指定基于矩阵的数据时,软件假定采样时间为1秒。您可以通过设置属性更改估计后的采样时间sys。Ts

  • 对于SISO系统,请指定数据作为一对N年代-by-1实值矩阵,包含均匀采样的输入和输出时域信号值。在这里,N年代是样本的数量。

  • 对于MIMO系统,请指定uy作为一个输入/输出矩阵对,具有以下维度:

    • u- - - - - -N年代——- - - - - -Nu,在那里Nu是输入的数量。

    • y- - - - - -N年代——- - - - - -Ny,在那里Ny是输出的数量。

  • 对于多实验数据,请指定uy作为一对1 × -Ne单元格数组,其中Ne是实验的次数。所有实验的采样次数必须匹配。

数据对象

一种估计数据对象,指定为时域iddata对象,该对象包含统一采样的输入和输出值。软件默认将模型的采样时间设置为估计数据的采样时间。

对于多实验数据,所有实验的样本次数和样本间行为必须匹配。

有关使用估计数据类型的详细信息,请参见系统标识工具箱中的数据类型

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

的尺寸订单

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

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

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

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

输入非线性估计器,指定为包含以下一个或多个字符串或映射对象的列数组。请注意,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数组。若要为所有输入指定相同的非线性,请指定单个输入非线性估计器。

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

“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数组。若要为所有输出指定相同的非线性,请指定单个输出非线性估计器。

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

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

  • 状态空间模型(中的难点

  • 传递函数模型(idtf

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

Hammerstein-Wiener模型,指定为idnlhw对象。sys0可以是:

  • 以前创建的模型idnlhw指定模型属性。

  • 以前估计的模型nlhw,您希望使用新的估计数据集进行更新。

    你也可以提炼sys0使用原始的估计数据集。如果先前的估计在数值搜索停留在代价函数的局部最小值时停止,则使用初始化首先随机化的参数sys0.看到sys0.Report.Termination搜索停止条件。使用初始化并不能保证在进一步细化时得到更好的解决方案。

Hammerstein-Wiener模型识别的估计选项,指定为nlhwOptions选项设置。可用的选项包括:

  • 搜索选项

  • 归一化选项

  • 正则化选项

输出参数

全部折叠

估计的Hammerstein-Wiener模型,返回为idnlhw对象。使用指定的模型阶数、输入和输出非线性估计器和估计选项来估计模型。

有关所使用的估计结果和选项的信息存储在报告模型的属性。报告具有以下字段:

报告字段 描述
状态

模型状态的总结,表明模型是通过构造创建的还是通过估计获得的。

方法

使用估计命令。

适合

估计的定量评估,作为结构返回。看到损失函数和模型质量度量有关这些质量度量的更多信息。该结构有以下字段:

描述
FitPercent

归一化均方根误差(NRMSE)衡量模型响应与估计数据的吻合程度,以百分比表示fitpercent= 100 (1-NRMSE)。

LossFcn

估计完成时损失函数的值。

均方误差

均方误差(MSE)衡量模型的响应与估计数据的吻合程度。

消防工程

模型的最终预测误差。

另类投资会议

原始赤池信息标准(AIC)是模型质量的度量标准。

AICc

小样本量校正AIC。

保险代理人

标准化的另类投资会议。

BIC

贝叶斯信息准则(BIC)。

参数

模型参数估计值。

OptionsUsed

用于估计的选项集。如果没有配置自定义选项,则这是一组默认选项。看到nlhwOptions获取更多信息。

RandState

估计开始时随机数流的状态。空的,[],如果在估计过程中没有使用随机化。有关更多信息,请参见rng

DataUsed

用于估计的数据的属性,作为具有以下字段的结构返回。

描述
的名字

数据集的名称。

类型

数据类型。

长度

数据样本数量。

Ts

样品时间。

InterSample

输入样例间行为,作为以下值之一返回:

  • “zoh”-零阶保持器在样本之间保持分段恒定的输入信号。

  • “呸”-一阶保持器在样本之间保持分段线性输入信号。

  • “提单”—限带行为指连续时间输入信号在奈奎斯特频率以上的功率为零。

InputOffset

在估计过程中从时域输入数据中删除的偏移量。对于非线性模型,它是[]

OutputOffset

在估计过程中从时域输出数据中删除的偏移量。对于非线性模型,它是[]

终止

用于预测误差最小化的迭代搜索的终止条件,作为具有以下字段的结构返回:

描述
WhyStop

终止数值搜索的原因。

迭代

由估计算法执行的搜索迭代次数。

FirstOrderOptimality

-搜索算法结束时梯度搜索向量的norm。

FcnCount

目标函数被调用的次数。

UpdateNorm

最后一次迭代中梯度搜索向量的范数。搜索方法为时省略“lsqnonlin”“fmincon”

LastImprovement

最后一次迭代中的标准改进,以百分比表示。搜索方法为时省略“lsqnonlin”“fmincon”

算法

使用的算法“lsqnonlin”“fmincon”搜索方法。使用其他搜索方法时省略。

对于不需要数值搜索优化的估计方法,请使用终止字段省略。

有关更多信息,请参见评估报告

版本历史

在R2007a中引入

全部展开