什么是哈默斯坦-维纳模型?
当系统的输出非线性地依赖于其输入时,有时可以将输入-输出关系分解为两个或多个相互连接的元素。在这种情况下,您可以用线性传递函数表示动态,并使用线性系统输入和输出的非线性函数捕获非线性。哈默斯坦-维纳模型通过静态非线性模块与动态线性模块的串联连接实现了这种配置。哈默斯坦-维纳模型应用涉及多个领域,例如建模机电系统和射频组件、音频和语音处理以及化学过程的预测控制。这些模型具有方便的模块表示、与线性系统的透明关系,并且比神经网络和 Volterra 模型等重型非线性模型更容易实现。
您可以使用哈默斯坦-维纳模型作为黑盒模型结构,因为它为非线性模型提供了灵活的参数化。例如,您可以估计一个线性模型,并尝试通过向该模型添加输入或输出非线性来提高其保真度。您还可以使用哈默斯坦-维纳模型作为灰盒结构来捕获有关过程特性的物理知识。例如,输入非线性可以表示作动器中的典型物理变换,而输出非线性可以描述常见的传感器特性。有关何时拟合非线性模型的详细信息,请参阅About Identified Nonlinear Models。
哈默斯坦-维纳模型的结构
哈默斯坦-维纳模型使用一个或两个静态非线性模块与一个线性模块串联来描述动态系统。线性模块是一个离散传递函数,表示模型的动态分量。
该模块表示了哈默斯坦-维纳模型的结构:

其中,
f 是一个非线性函数,将输入数目据 u(t) 转换为 w(t) = f(u(t))。
w(t) 是一个内部变量,是输入非线性模块的输出,与 u(t) 具有相同的维度。
B/F 是一个线性传递函数,将 w(t) 转换为 x(t) = (B/F)w(t)。
x(t) 是一个内部变量,是线性模块的输出,与 y(t) 具有相同的维度。
B 和 F 类似于线性输出-误差模型中的多项式。有关输出-误差模型的详细信息,请参阅 What Are Polynomial Models?
对于 ny 输出和 nu 输入,线性模块是一个包含以下条目的传递函数矩阵:
其中 j =
1,2,...,ny且 i =1,2,...,nu。h 是一个非线性函数,它将线性模块 x(t) 的输出映射到系统输出 y(t) 作为 y(t) = h(x(t))。
由于 f 作用于线性模块的输入端口,因此该函数被称为输入非线性。类似地,由于 h 作用于线性模块的输出端口,因此该函数被称为输出非线性。如果您的系统包含多个输入和输出,则必须为每个输入和输出信号定义函数 f 和 h。您不必在模型结构中同时包含输入和输出非线性。当模型仅包含输入非线性 f 时,它被称为 Hammerstein 模型。类似地,当模型仅包含输出非线性 h 时,它被称为维纳模型。
该软件分三个阶段计算哈默斯坦-维纳模型输出 y:
从输入数目据计算 w(t) = f(u(t))。
w(t) 是线性传递函数 B/F 的输入。
输入非线性是一个静态(无记忆)函数,其中给定时间 t 的输出值仅取决于时间 t 的输入值。
您可以将输入非线性配置为 S 型网络、小波网络、饱和度、死区、分段线性函数、一维多项式或自定义网络。您还可以消除输入非线性。
使用 w(t) 和初始条件计算线性模块的输出:x(t) = (B/F)w(t)。
您可以通过指定分子 B 和分母 F 的顺序来配置线性模块。
通过使用非线性函数 h 将线性模块 x(t) 的输出转换为 y(t) = h(x(t)) 来计算模型输出。
与输入非线性类似,输出非线性是一个静态函数。您可以按照与输入非线性相同的方式配置输出非线性。您还可以消除输出非线性,例如 y(t) = x(t)。
结果模型是存储所有模型数据的 idnlhw 对象,包括模型参数和非线性估计器。有关这些对象的详细信息,请参阅Nonlinear Model Structures。
您可以在系统辨识中或在命令行中使用 nlhw 命令来估计哈默斯坦-维纳模型。您可以使用均匀采样的时域输入-输出数目据来估计哈默斯坦-维纳模型。您的数据可以有一个或多个输入和输出通道。您不能使用时间序列数据(仅输出)或频域数据进行估计。如果您有时间序列数据,为了拟合非线性模型,请辨识非线性 ARX 模型或非线性灰盒模型。有关这些模型的详细信息,请参阅Identifying Nonlinear ARX Models和Estimate Nonlinear Grey-Box Models。