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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈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.

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Matlab】基于径向基神经网络的数据分类预测(Excel可直接替换数据)

【Matlab】基于径向基神经网络的数据分类预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码6.完整代码7.运行结果1.模型原理 基于径向基神经网络(Radial Basis Function Neural Network,RBFNN)的数据分类预测是一种基于神经网络的分类模型…

Windows Server 2012 搭建网关服务器并端口转发

需求 使用 Windows server 作为Hyper-V 虚拟出许多虚拟机&#xff0c;基本上都分配了内网地址&#xff0c;现在需要这些虚拟机访问外网&#xff0c;或者外网直接访问这些虚拟机&#xff0c;必须配置一个网关服务器。我决定直接使用 Windows 的远程访问中的 NAT 服务来完成。 …

PHP注册、登陆、6套主页-带Thinkphp目录解析-【强撸项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 上效果图主页注册&#xff0c;登陆 phpStudy 设置导数据库项目目录如图&#xff1a;代码部分&#xff1a;控制器前台的首页 其它配套页面展示直接给第二套方案的页面吧第三套…

如何安装 MySQL 客户端 - Mac, Ubuntu, CentOS 或 Windows

官方的 MySQL 客户端 mysql&#xff0c;也被称为 MySQL CLI&#xff0c;是个可以和你的 MySQL 服务器进行交互的命令行工具。 本文介绍了如何分别在 Mac, Ubuntu, Debian 和 Windows 上安装 mysql。 准备工作 首先&#xff0c;确认一下你之前是否安装过某个 MySQL 客户端。如…

【云原生】Kubernetes工作负载-StatefulSet

StatefulSet StatefulSet 是用来管理有状态应用的工作负载 API 对象 StatefulSet 用来管理某 Pod 集合的部署和扩缩&#xff0c; 并为这些 Pod 提供持久存储和持久标识符 和 Deployment 类似&#xff0c; StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同…

【Vue3】computed 计算属性

computed 基础语法 <template><div><div>性&#xff1a;<input v-model"firstName" type"text"></div><div>名&#xff1a;<input v-model"lastName" type"text"></div><div>…

Android版本的发展4-13

Android 4.4 KitKat 1、通过主机卡模拟实现新的 NFC 功能。 2、低功耗传感器&#xff0c;传感器批处理&#xff0c;步测器和计步器。 3、全屏沉浸模式&#xff0c;隐藏所有系统 UI&#xff0c;例如状态栏和导航栏。它适用于鲜艳的视觉内容&#xff0c;例如照片、视频、地图、…

API自动化测试总结

目录 Jmeter是怎么做API自动化测试的&#xff1f; Jmeter中动态参数的处理&#xff1f; 怎么判断前端问题还是后端问题&#xff1f; 详细描述下使用postman是怎么做API的测试的&#xff1f; 资料获取方法 Jmeter是怎么做API自动化测试的&#xff1f; 1、首先在JMeter里面…

Spring AOP(面向切面编程)的详细讲解

1.什么是 AOP&#xff1f; AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff1a;⾯向切⾯编程&#xff0c;它是⼀种思想&#xff0c;它是对某⼀类事情的集中处理 AOP是一种思想&#xff0c;而Spring AOP是一个实现了AOP的思想框架&#xff0c;他们的关系和IOC…

git实战

git实战 第一章 快速入门 1.1 什么是git git是一个分布式的版本控制软件。 软件&#xff0c;类似于QQ、office、dota等安装到电脑上才能使用的工具。版本控制&#xff0c;类似于毕业论文、写文案、视频剪辑等&#xff0c;需要反复修改和保留原历史数据。分布式 - 文件夹拷贝…

rk3588 编译(使用github公版源码)和烧录(sd、emmc)

使用 github 上的代码进行编译 https://github.com/rockchip-linux/rkbin/tree/master https://github.com/rockchip-linux/u-boot/tree/next-dev https://github.com/rockchip-linux/kernel/tree/develop-5.10 下载他们的压缩包&#xff0c;自行解压&#xff0c;解压后把文件夹…

RocketMQ教程-(4)-领域模型概述

Apache RocketMQ 是一款典型的分布式架构下的中间件产品&#xff0c;使用异步通信方式和发布订阅的消息传输模型。通信方式和传输模型的具体说明&#xff0c;请参见下文通信方式介绍和消息传输模型介绍。 Apache RocketMQ 产品具备异步通信的优势&#xff0c;系统拓扑简单、上下…

Java-IDEA好用的插件

Lombok&#xff0c;结合一些列注解&#xff0c;帮我们轻松解决重复编写实体类get、set、toString、build、构造方法等麻烦 Chinesepinyin-CodeComp&#xff0c;让界面汉化&#xff0c;使用起来更有亲和力 MyBatisX,点击小鸟图标&#xff0c;轻松再Mapper接口与xml文件之间实…

无涯教程-html(val)

html(val)方法设置每个匹配元素的html内容。此属性在XML文档上不可用&#xff0c;但适用于XHTML文档。 html( val ) - 语法 selector.html( val ) 这是此方法使用的所有参数的描述- val - 任何字符串 html( val ) - 示例 以下示例将获取第一段的HTML内容&#xff0c;并…

【算法与数据结构】104、111、LeetCode二叉树的最大/最小深度

文章目录 一、题目二、层序遍历法三、递归法四、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、层序遍历法 思路分析&#xff1a;两道题都可以用层序遍历&#xff08;迭代法&#xff09;来做&#xff0c;遍历完…

帮助中心内容需要囊括什么?(内含案例分享)

给产品制作一个帮助中心&#xff0c;让用户能够通过访问帮助中心查看产品相关内容&#xff0c;尽快了解产品&#xff0c;熟悉操作。不仅仅局限于售后&#xff0c;在售中售前都能够发挥很大的作用&#xff0c;帮助用户全面了解产品&#xff0c;减少销售的工作量&#xff0c;节约…

如何开展企业级spring cloud微服务开发实践落地

随着互联网技术的不断发展&#xff0c;微服务架构已经成为了企业级应用开发的重要趋势。Spring Cloud是基于Spring Boot的微服务框架&#xff0c;它提供了一系列的组件和工具&#xff0c;可以帮助开发者快速搭建、部署和管理微服务系统。本文将介绍如何开展企业级Spring Cloud微…

Zookeeper命令总结

目录 1、常用命令2、ls path3、create xxx创建持久化节点创建临时节点创建持久化序列节点 4、get path5、set path6、delete path7、监听器总结1&#xff09;节点的值变化监听2&#xff09;节点的子节点变化监听&#xff08;路径变化&#xff09;3&#xff09;当某个节点创建或…

最优化方法

一. 图论 1.最小生成树 图的生成树是它的一颗含有其所有顶点的无环连通子图,一 幅加权图的最小生成树(MST)是它的一颗权值(树中的所有边的权值之和) 最小的生成树 • 适用场景&#xff1a;道路规划、通讯网络规划、管道铺设、电线布设等 题目数据 kruskal算法 稀疏图&#x…

oracle单个用户最大连接数限制

项目经理反馈&#xff0c;现场已做了单个用户的最大连接数2000的限制&#xff0c;但数据库还是报无法连接&#xff0c;故障用户的连接数已3800多了。 查看日志报错如下 2023-07-20T13:07:57.79465308:00 Process m000 submission failed with error 20 Process m000 submiss…