【Hammerstein模型的级联】快速估计构成一连串哈默斯坦模型的结构元素研究(Matlab代码实现)

目录

[💥1 概述](#💥1 概述)

[📚2 运行结果](#📚2 运行结果)

[🎉3 参考文献](#🎉3 参考文献)

[🌈4 Matlab代码实现](#🌈4 Matlab代码实现)


💥1 概述

在许多振动应用中,所研究的系统略微非线性。Hammerstein模型的级联可以方便地描述这样的系统。Hammerstein提供了一种基于指数正弦扫描相位属性的简单方法。

构成一连串Hammerstein模型的结构元素可以在快速估计中起到关键的作用。Hammerstein模型由级联的非线性静态函数和线性动态函数组成。以下是研究Hammerstein模型结构元素的步骤:

  1. 数据收集:首先,收集用于建立Hammerstein模型的数据。这些数据应包括系统的输入和输出信号,以便进行模型参数估计和验证。

  2. 静态非线性函数选择:选择适当的静态非线性函数作为Hammerstein模型的非线性部分。常见的选择包括多项式函数、幂函数、指数函数、Sigmoid函数等。根据系统的特性和预期的非线性行为,选择最能表示系统的非线性特点的函数。

  3. 参数估计:对选择的静态非线性函数进行参数估计。参数估计的方法可以根据函数的性质灵活选择,例如最小二乘法、最大似然估计法等。根据所选方法,使用数据集中的输入和输出信号优化非线性函数的参数。

  4. 线性动态函数选择:选择适当的线性动态函数作为Hammerstein模型的动态部分。常见的选择包括传递函数、状态空间模型等。根据系统的动态特性,选择最适合描述系统响应的线性动态函数。

  5. 参数估计:对选择的线性动态函数进行参数估计。使用数据集中的输入和输出信号,在模型的非线性部分和线性动态部分之间优化参数。

  6. 模型验证:使用建立的Hammerstein模型对独立数据集进行验证。计算预测输出与真实输出之间的误差,评估模型的准确性和可靠性。如果有必要,可以对模型进行进一步调整和改进。

  7. 性能分析:对Hammerstein模型的性能进行分析。例如,可以通过计算模型的拟合优度(如均方根误差)来评估模型的准确性。此外,还可以进行稳定性分析、系统辨识度评估等进一步分析。

需要注意的是,构建Hammerstein模型需要对非线性和线性组成部分的选择和参数估计进行适当的判断和调整。根据具体问题的复杂性和数据的可用性,可以采用各种方法和技术来加快估计和验证过程。

📚 2 运行结果

部分代码:

function hhat = Hammerstein_ID(input_sig,output,duration,f1,f2,fs,N,opt_meth,opt_filt)

%---------------------------------------------------------

%

% hhat = Hammerstein_ID(input_sig,output,f1,f2,fs,N,opt_meth,opt_filt)

%

% Estimates the Kernels "h" of the cascade of Hammerstein model of order N fed with

% the input signal "input" and where the corresponding output signal "output"

% has been recorded. "input" has to be an exponential sine sweep going from

% f1 to f2.

%

% Input parameters:

% input_sig : input exponential sine sweep

% output : output of the system fed with the input signal

% f1 : starting frequency of the sweep

% f2 : end frequency of the sweep

% fs : sampling frequency

% N : Order of the model to be identified

% opt_meth : Method to use for the estimation (string expected)

% - 'Reb': Method proposed by R閎illat et al. in [1]

% - 'Nov': Method proposed by Novak et al in [2]

% opt_filt : Specifies the method to use to compute the inverse filter

% (string expected). By default 'TFB_linear' is chosen.

% - 'TFB_square': FTT based filter with a square window and

% regularization (see [1])

% - 'TFB_linear': FTT based filter with a square window with continuous

% linear borders and regularization (see [1])

% - 'TFB_gevrey': FTT based filter with a square window with infinitely

% continuous gevrey borders and regularization (see [1])

% - 'Nov' : Filter based on the analytical formulation using aymptotic

% signals (see [2]).

%

% Output:

% h : 2D matrix containing the pseudo impulse responses (temporal domain)

% of the estimated kernels.

display('--> Hammerstein Identification in progress ...')

% Check arguments

if nargin<6

display(' => ERROR : Incorrect number of arguments')

return

elseif nargin<7

display(' => No method option and filtering option specified. ')

display(' => Method option = ''Reb'' chosen by default.')

display(' => Filtering option = ''TFB_linear'' chosen by default.')

opt_meth = 'Reb' ;

opt_filt = 'TFB_linear';

elseif nargin<8

display([' => Method ' opt_meth ' chosen'])

display(' => No filtering option specified. ')

if strcmp(opt_meth,'Reb')

opt_filt = 'TFB_linear';

display(' => Filtering option = ''TFB_linear'' chosen by default.')

elseif strcmp(opt_meth,'Nov')

opt_filt = 'Nov';

display(' => Filtering option = ''Nov'' chosen by default.')

else

display(' => ERROR : Unknown method option')

display(' => Select ''Reb'' or ''Nov''')

return

end

else

if ( strcmp(opt_meth,'Nov') || strcmp(opt_meth,'Reb'))

display([' => Method ' opt_meth ' chosen'])

else

display(' => ERROR : Unknown method option')

display(' => Select ''Reb'' or ''Nov''')

return

end

if ( strcmp(opt_filt,'TFB_square') || strcmp(opt_filt,'TFB_linear') || strcmp(opt_filt,'TFB_gevrey') || strcmp(opt_filt,'Nov'))

display([' => Filtering ' opt_filt ' chosen'])

else

display(' => ERROR : Unknown filtering option')

display(' => Select ''TFB_square'', ''TFB_linear'', ''TFB_gevrey'' or ''Nov''')

return

end

end

% Equivalent pulsations

w1 = f1/fs*2*pi;

w2 = f2/fs*2*pi;

% Convolution of the response with the inverse of the sweep

if strcmp(opt_meth,'Reb')

inverse_input_sig = compute_inverse_filter(input_sig,f1,f2,fs,opt_filt) ;

gToCut = convq(output,inverse_input_sig);

elseif strcmp(opt_meth,'Nov')

% Nonlinear convolution in the spectral domain

gToCut = nonlinear_convolution(output,duration,f1,f2,fs);

gToCut = [gToCut; gToCut];

end

% Computation of the delay of the pseudo RI

if strcmp(opt_meth,'Reb')

T = length(input_sig); % Actual length of the sweep (in samples)

deltaT = T*log(1:N)/log(w2/w1);

elseif strcmp(opt_meth,'Nov')

T = length(output); % Actual length of the output (in samples)

L = 1/f1*round( (duration*f1)/(log(f2/f1)) );

deltaT = L*log(1:N)*fs;

end

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

1\] M. Rébillat, R. Hennequin, E. Corteel, B.F.G. Katz, "Identification of cascade of Hammerstein models for the description of non-linearities in vibrating devices", Journal of Sound and Vibration, Volume 330, Issue 5, Pages 1018-1038, February 2011. \[2\] A. Novak, L. Simon, F. Kadlec, P. Lotton, "Nonlinear system identification using exponential swept-sine signal", IEEE Transactions on Instrumentation and Measurement, Volume 59, Issue 8, Pages 2220-2229, August 2010. ## [🌈](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzk0MDMzNzYwOA==&action=getalbum&album_id=2591810113208958977#wechat_redirect "🌈")****4 Matlab代码实现****

相关推荐
HW-BASE3 小时前
《C语言》指针练习题--1
c语言·开发语言·单片机·算法·c
勤奋的小笼包3 小时前
论文阅读笔记:《Dataset Distillation by Matching Training Trajectories》
论文阅读·人工智能·笔记
max5006003 小时前
基于深度学习的污水新冠RNA测序数据分析系统
开发语言·人工智能·python·深度学习·神经网络
Sunhen_Qiletian3 小时前
计算机视觉前言-----OpenCV库介绍与计算机视觉入门准备
人工智能·opencv·计算机视觉
泽虞3 小时前
数据结构与算法
c语言·数据结构·算法
数字游名Tomda4 小时前
OpenAI推出开源GPT-oss-120b与GPT-oss-20b突破性大模型,支持商用与灵活部署!
人工智能·经验分享·gpt
max5006004 小时前
深度学习的视觉惯性里程计(VIO)算法优化实践
人工智能·深度学习·算法
岁忧4 小时前
(nice!!!)(LeetCode 每日一题) 3363. 最多可收集的水果数目 (深度优先搜索dfs)
java·c++·算法·leetcode·go·深度优先
坐在地上想成仙4 小时前
计算机视觉(3)深度学习模型部署平台技术选型与全栈实践指南
人工智能·深度学习
shenghaide_jiahu6 小时前
数学建模——粒子群算法
算法·数学建模