Hammerstein-Wiener模型用一个或两个静态非线性块与一个线性块串联来描述动态系统。线性块体是一个离散的传递函数,代表了模型的动态分量。有关这些模型结构的更多信息,请参见什么是Hammerstein-Wiener模型?
你可以估计Hammerstein-Wiener模型系统识别或在命令行中使用nlhw
命令。要估计Hammerstein-Wiener模型,首先要准备估计数据。然后配置模型结构和估计算法,然后执行估计。在评估之后,您可以验证评估模型验证Hammerstein-Wiener模型.
您只能使用一致采样的时域输入-输出数据来估计Hammerstein-Wiener模型。您的数据可以有一个或多个输入和输出通道。不能使用时间序列数据(仅输出)或频域数据进行估算。使用非线性ARX或非线性灰色矩形模型用于时间序列数据。
要准备用于模型估计的数据,请将数据导入MATLAB®工作区,一个下面的:
导入数据后,您可以分析数据质量并通过插入缺失值、过滤以强调特定的频率范围或使用不同的采样时间重新采样来对数据进行预处理。有关更多信息,请参见为系统识别准备数据的方法.对于大多数应用程序,在进行非线性建模之前,不需要从数据中去除偏移量和线性趋势。但是,数据去趋势化在某些情况下是有用的,比如在对一个操作点的输入和输出更改之间的关系建模之前。
在准备好估算数据之后,您可以配置模型结构、损失函数和估算算法,然后使用估算数据估算模型。
Hammerstein-Wiener模型结构由输入输出非线性块与线性块串联而成。线性块体是一个离散的传递函数,代表了模型的动态分量。
为了配置Hammerstein-Wiener模型的结构:
配置线性传输功能块
执行一个下面的:
将线性传递函数的模型阶次和输入延迟指定为:
注- 0加1的个数。注为分子的长度(B)多项式。
nf-极点数。nf为传递函数分母的阶数(F多项式)。
nk-从输入到输出的延迟,以样本的数量来衡量。
用于MIMO系统纽约输出和ν输入,注,nf,nk是纽约——- - - - - -ν矩阵。
使用离散时间线性模型初始化线性块-您只能在命令行中使用线性模型初始化。初始化将线性块的传递函数设置为指定的线性模型的传递函数。有关更多信息,请参见用线性模型初始化Hammerstein-Wiener估计.
配置输入和输出的非线性,f和h分别。
默认的输入输出非线性估计器是分段线性函数。看到pwlinear
更多信息参考页。要配置输入和输出非线性估计器:
选择输入和输出非线性估计器的类型,并配置它们的特性。
有关可用非线性估计器的列表,请参阅Hammerstein-Wiener模型的可用非线性估计.
排除输入或输出非线性块。
您不必在模型结构中同时包含输入和输出非线性。当一个模型只包含输入非线性时f,它被称为汉默斯坦模型。同样,当模型只包含输出非线性时h,它被称为维纳模型。
有关如何在命令行和应用程序中配置模型结构的信息,请参见在命令行中估计Hammerstein-Wiener模型和在应用中估计Hammerstein-Wiener模型.
要配置模型估计,请指定要最小化的损失函数,并选择估计算法和其他估计选项来执行最小化。
损失函数或成本函数是模型输出和测量输出之间的误差的函数。有关丢失函数的详细信息,请参见损失函数和模型质量度量.
在命令行中,使用nlhw
选项设置,nlhwOptions
配置丢失功能。您可以指定以下选项:
OutputWeight
-指定多输出估计误差的权重。
正则化
-修改损失函数,以增加一个惩罚的方差估计参数。有关更多信息,请参见模型参数的正则估计.
如何在app中指定这些选项,请参见在应用中估计Hammerstein-Wiener模型.
为了估计Hammerstein-Wiener模型,软件使用迭代搜索算法来最小化损失函数。在命令行中,使用nlhwOptions
指定搜索算法和其他估计选项。你可以指定以下选项:
SearchMethod
-最小化预测或仿真误差的搜索方法,如Gauss-Newton和Levenberg-Marquardt线搜索和trust区域反射牛顿方法。
SearchOptions
-搜索算法的选项集,字段依赖于值SearchMethod
,如:
MaxIterations
—最大迭代次数。
宽容
-当参数值的期望改进小于指定值时,终止迭代搜索的条件。
InitialCondition
-默认情况下,软件将模型的初始状态视为零,不进行状态估计。您可以选择估计初始状态,这有时可以改进参数估计。
要查看可用评估选项的完整列表,请参见nlhwOptions
.有关如何在应用程序中指定这些评估选项的详细信息,请参见在应用中估计Hammerstein-Wiener模型.
在对估计数据进行预处理并配置模型结构、损失函数和估计选项后,可以在系统识别应用程序,或使用nlhw
.得到的模型是idnlhw
对象,该对象存储所有模型数据,包括模型参数和非线性估计器。有关这些模型对象的更多信息,请参见非线性模型结构.您可以验证中描述的估计模型验证Hammerstein-Wiener模型.
在命令行中,你可以使用以下线性模型来初始化Hammerstein-Wiener模型的线性块:
输出误差(OE)结构多项式模型(idpoly
)
无扰动分量的状态空间模型(中的难点
K = 0的模型)
传递函数(idtf
模型)
通常,您使用oe
,n4sid
,或特遣部队
获取线性模型的命令。在构建或估计Hammerstein-Wiener模型时,您可以提供线性模型。例如,使用以下语法使用估计数据和线性模型估计Hammerstein-Wiener模型LinModel
.
LinModel m = nlhw(数据)
在这里米
是一个idnlhw
对象,数据
是一种时域iddata
对象。该软件使用线性模型初始化Hammerstein-Wiener估计:
将线性模型阶数指定为非线性模型阶数的初值(注
和nf
Hammerstein-Wiener的性质(idnlhw
)及延误(nk
属性)。
设置B和F线性传递函数的多项式Hammerstein-Wiener模型结构.
在估计过程中,估计算法利用这些值来调整非线性模型对数据的影响。默认情况下,输入和输出非线性估计器都是分段线性函数(参见pwlinear
).
您还可以指定不同的输入和输出非线性估计器。例如,一个sigmoid网络输入非线性估计器和一个死区输出非线性估计器。
m = nlhw(数据、LinModel“sigmoidnet”,“死区”)