主要内容

识别Hammerstein-Wiener模型

Hammerstein-Wiener模型使用一个或两个静态非线性块与一个线性块串联来描述动态系统。线性块是离散传递函数,表示模型的动态分量。有关这些模型结构的更多信息,请参见什么是Hammerstein-Wiener模型?

你可以估计Hammerstein-Wiener模型系统识别应用程序或在命令行中使用nlhw命令。要估计Hammerstein-Wiener模型,首先准备估计数据。然后配置模型结构和估计算法,然后执行估计。估计之后,您可以验证估计的模型,如Hammerstein-Wiener模型验证

准备识别数据

您只能使用统一采样的时域输入-输出数据来估计Hammerstein-Wiener模型。数据可以有一个或多个输入和输出通道。不能使用时间序列数据(仅输出)或频域数据进行估计。使用非线性ARX非线性灰盒模型对于时间序列数据。

要为模型估计准备数据,请将数据导入MATLAB®工作空间,并做一个以下的:

  • 在系统识别应用程序—导入数据到应用中,具体操作请参见表示数据

  • 在命令行-将您的数据表示为iddata对象。

导入数据后,您可以通过插值缺失值、过滤以强调特定频率范围或使用不同的采样时间重新采样来分析数据质量和预处理数据。有关更多信息,请参见系统标识的数据准备方法.对于大多数应用程序,在非线性建模之前不需要从数据中删除偏移量和线性趋势。然而,数据去趋势在某些情况下是有用的,例如在对一个工作点的输入和输出变化之间的关系建模之前。

在准备估计数据之后,您可以配置模型结构、损失函数和估计算法,然后使用估计数据估计模型。

配置Hammerstein-Wiener模型结构

Hammerstein-Wiener模型结构由输入和输出非线性块与线性块串联而成。线性块是离散传递函数,表示模型的动态分量。

配置Hammerstein-Wiener模型的结构:

  1. 配置线性传递函数块。

    执行一个以下的:

    • 指定线性传递函数的模型阶数和输入延迟为:

      • - 0 + 1的个数。是分子的长度(B)多项式。

      • nf-杆数。nf传递函数分母(F多项式)。

      • nk-从输入到输出的延迟,以样本数量表示。

      用于MIMO系统纽约输出和ν输入,nf,nk纽约——- - - - - -ν矩阵。

    • 使用离散线性模型初始化线性块——您只能在命令行上使用线性模型初始化线性块。初始化将线性块的传递函数设置为指定线性模型的传递函数。有关更多信息,请参见使用线性模型初始化Hammerstein-Wiener估计

  2. 配置输入和输出非线性,f而且h分别。

    默认的输入和输出非线性估计器是分段线性函数。看到idPiecewiseLinear有关更多信息的参考页。配置输入和输出非线性估计器:

    1. 选择输入和输出非线性估计器的类型,并配置它们的属性。

      有关可用的非线性估计器的列表,请参见Hammerstein-Wiener模型的可用非线性估计量

    2. 排除输入或输出非线性块。

      您不必在模型结构中同时包含输入和输出非线性。当一个模型只包含输入非线性时f,叫做a汉默斯坦模型。类似地,当模型只包含输出非线性时h,叫做a维纳模型。

有关如何在命令行和应用程序中配置模型结构的信息,请参见在命令行上估计Hammerstein-Wiener模型而且在App中估计Hammerstein-Wiener模型

指定Hammerstein-Wiener模型的估计选项

为了配置模型估计,指定要最小化的损失函数,并选择估计算法和其他估计选项来进行最小化。

配置Loss命令功能

损失函数或代价函数是模型输出与测量输出之间误差的函数。有关损失函数的详细信息,请参见损失函数和模型质量度量

在命令行中,使用nlhw选项设置,nlhwOptions来配置损失函数。您可以指定以下选项:

  • OutputWeight-指定多输出估计中误差的权重。

  • 正则化-修改损失函数,在估计参数的方差上增加一个惩罚。有关更多信息,请参见模型参数的正则化估计

有关如何在应用程序中指定这些选项的详细信息,请参见在App中估计Hammerstein-Wiener模型

指定估计算法

为了估计Hammerstein-Wiener模型,该软件使用迭代搜索算法来最小化损失函数。在命令行中,使用nlhwOptions指定搜索算法和其他估计选项。您可以指定的一些选项有:

  • SearchMethod-最小化预测或模拟误差的搜索方法,如Gauss-Newton和Levenberg-Marquardt线搜索,以及信赖域反射Newton方法。

  • SearchOptions—搜索算法选项集,各字段依赖于的值SearchMethod,例如:

    • MaxIterations-执行的最大迭代次数。

    • 宽容—当参数值的期望改进小于指定值时,终止迭代搜索的条件。

  • InitialCondition-默认情况下,软件将模型的初始状态视为零,不估计状态。您可以选择估计初始状态,这有时可以改进参数估计。

要查看可用评估选项的完整列表,请参见nlhwOptions.有关如何在应用程序中指定这些估计选项的详细信息,请参见在App中估计Hammerstein-Wiener模型

对估计数据进行预处理并配置模型结构、损失函数和估计选项后,可以在系统识别App,或使用nlhw.得到的模型是idnlhw对象,该对象存储所有模型数据,包括模型参数和非线性估计器。有关这些模型对象的详细信息,请参见非线性模型结构.中描述的方法验证估计模型Hammerstein-Wiener模型验证

使用线性模型初始化Hammerstein-Wiener估计

在命令行中,您可以使用以下线性模型之一来初始化Hammerstein-Wiener模型的线性块:

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

  • 无干扰分量的状态空间模型(中的难点K = 0的模型)

  • 传递函数(idtf模型)

通常,使用oen4sid,或特遣部队命令获取线性模型。在构建或估计Hammerstein-Wiener模型时,可以提供线性模型。例如,使用以下语法使用估计数据和线性模型来估计Hammerstein-Wiener模型LinModel

m = nlhw(data,LinModel)

在这里是一个idnlhw对象,数据是一个时域iddata对象。该软件使用线性模型初始化Hammerstein-Wiener估计:

  • 将线性模型阶作为非线性模型阶的初始值(而且nfHammerstein-Wiener的性质(idnlhw)及延误(nk属性)。

  • 设置B而且F线性传递函数的多项式Hammerstein-Wiener模型结构

在估计过程中,估计算法使用这些值来调整非线性模型以适应数据。默认情况下,输入和输出非线性估计器都是分段线性函数(参见idPiecewiseLinear).

您还可以指定不同的输入和输出非线性估计器。例如,一个s型网络输入非线性估计器和一个死区输出非线性估计器。

m = nlhw(数据,LinModel,“idSigmoidNetwork”“idDeadZone”

有关示例,请参见使用线性OE模型初始化Hammerstein-Wiener模型

相关的话题