特征模态分解(FMD):一种小众而又新颖的分解方法

       声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 

        今天为大家介绍一个小众而又新颖的信号分解方法,这个方法也是2023年刚提出来的一个新算法,最初是用作故障诊断当中。目前,知网和WOS用的都还很少,只有寥寥数篇,非常适合作为创新点,也能让审稿人眼前一亮。

        这个算法发表在SCI一区期刊《IEEE TRANSACTIONS ON INDUSTRIAL ELECTRONICS》上,这个SCI期刊想必大家心里也都有数,IEEE系列信号处理领域的一区顶刊,想发一篇这个难度还是非常大的。

        传统的EMD分解方法最为人所熟知,但存在模态混叠、理论依据不足等缺点,而理论基础扎实的VMD算法并未考虑信号的脉冲特性和冲击特性。另外,这些分解算法已经快被彻底用烂了,尤其是光伏功率预测、风电功率预测或者是故障诊断等方面,更是重灾区。

        因此,为有效提升信号处理方法的性能,提高特征提取的准确性,我们本期要介绍的是MiaoYH等作者在2023年提出了一种全新非平稳信号处理方法——特征模态分解(FMD)

        简单来说,这个方法以解卷积的相关峭度为目标函数,通过建立自适应有限脉冲响应滤波器组并结合相关函数以实现故障周期的判别最终将信号分解为多个模态分量和的形式。

        不同于其他信号分解方法,FMD充分考虑了信号的周期与冲击特性,在保证对信号故障特征敏感的同时对干扰和噪声成分具有一定的鲁棒性。

        这边以某一原始信号为例(该信号无实际含义),展示一下运行结果。

        首先输入一列Excel信号,当然你有mat文件更好,直接load xx.mat即可在Matlab中读取文件。这边为了方便新手小白,以Excel文件为例,在替换数据时直接替换一列Excel数据即可。

        首先看一下原始信号图:

        设置滤波器个数为30,分解个数为5,最大迭代次数为20,得到的分解图和频谱图如下所示。

        同时计算均方根误差、信噪比与各分量相关系数,结果显示在命令行窗口中。可以看到,这段信号的均方根误差为138.4361,信噪比为-0.8315。

        总体来看,结合论文里的说法,这个算法具有以下几个优点:

        (1)同时考虑信号的冲动性和周期性,FMD分解目标对机械故障具有针对性,对其他干扰和噪声具有鲁棒性。

        (2)采用自适应FIR滤波器提取分解模式。不受滤波器形状、带宽、中心频率的限制,分解更加彻底。

        (3)在不以故障周期为先验知识的情况下,FMD可以准确分解机械故障信息,特别是在不同频带占主导地位的复杂故障。

        如果大家对这个算法有兴趣,想要拿去写论文,也都是完全没有问题的。为了方便大家写作,这边也给出算法的详细计算过程:

        (1)初始化迭代参数及FIR滤波器组加窗数K,令i=1、K=5~10,输入主要分解参数(模态个数n,滤波器长度L)

        (2)根据uik=x*fik获得分解后模态分量其中k=1,2,…,K,*为卷积计算。

        (3)滤波系数根据原始信号x(t)、分解所得模态分量uik以和预估信号故障周期Tik(Tik为uik自相关谱经过零点后所到达局部最大值Rik所对应的时刻)进行更新,令 i=i+1。

        (4)判定当前迭代过程是否达到最大迭代次数,如果达到,则返回步骤(3);否则,继续执行步骤(5)。

        (5)计算两相邻模态分量间相关系数,建立一KxK的相关矩阵CCk*k,并同预估信号故障周期Z计算两者的相关峭度,选取相关峭度较大的模态分量为分解所得分量,令K=K-1。

        (6)判定当前模态数量是否达到设置的数量n,如果达到,则分解停止,输出结果;如果没达到,则返回步骤2,继续上述操作。

        以上所有图片,一键运行main即可全部出图,非常清晰。文件夹里也会输出各结果的Excel,并附带原始参考文献,适合新手小白。

        想要以上Matlab代码的,只需点击下方小卡片,再后台回复关键词,不区分大小写:

FMD

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

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

相关文章

tensorflow实现二分类

# 导入所需库和模块 from tensorflow.keras.layers import Dense, Input, Activation # 导入神经网络层和激活函数模块 from tensorflow.keras.models import Sequential # 导入Keras的Sequential模型 import pandas as pd # 导入Pandas库用于数据处理 import numpy as np …

接口文档不显示新写的接口

新写的接口,但是不显示: 仔细对比源码才发现没有写tag: 然后就有了:

ES6之正则扩展

正则表达式扩展 u修饰符(Unicode模式)y修饰符(Sticky或粘连模式)s修饰符(dotAll模式)Unicode属性转义正则实例的flags属性字符串方法与正则表达式的整合 javascript的常用的正则表达式 验证数字邮箱验证手机…

C语言中的循环队列与栈、队列之间的转换实现

引言 在数据结构的学习中,栈(Stack)和队列(Queue)是两个非常重要的概念。它们分别遵循着后进先出(LIFO)和先进先出(FIFO)的原则。在某些情况下,我们可能需要…

C++——超简单登录项目

程序入口文件 #include <QtWidgets/QApplication> // 包含登录页面头文件 #include "DlgLogin.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);// 程序入口// 调页面起来//DlgMain w;//w.show();// 换成登录页面DlgLogin w;w.show();return…

开源禅道zentao的使用

很不幸禅道因为漏洞被人进攻了&#xff0c;被迫研究。 1.安装 直接使用docker进行部署&#xff0c;这里有非常多门道。官网的镜像easysoft-zentao是属于docker安装&#xff0c;而idoop的镜像虽然也是docker安装&#xff0c;但是实际是使用官网linux一键安装的版本&#xff0c…

一周学习总结:数组与链表

学习内容&#xff1a;数组与链表、计算机网络知识 数组&#xff1a; 从数组的基础知识到相关应用 数组的基础知识&#xff1a;数组在内存中的存储、数组的相关操作&#xff08;获取与更新&#xff09;、数组的相关应用&#xff1a; 二分查找法⭐⭐⭐⭐⭐ ● 掌握左闭右闭的…

2024第16届四川教育后勤装备展6月1日举办 欢迎参观

2024第16届四川教育后勤装备展6月1日举办 欢迎参观 邀请函 主办单位&#xff1a; 中国西部教体融合博览会组委会 承办单位&#xff1a;重庆港华展览有限公司 博览会主题&#xff1a;责任教育 科教兴邦 组委会&#xff1a;交易会159交易会2351交易会9466 展会背景 成都…

Chatgpt教你使用Python开发iPhone风格计算器

上次使用Chatgpt写爬虫&#xff0c;虽然写出来的代码很多需要修改后才能运行&#xff0c;但Chatgpt提供的思路和框架都是没问题。 这次让Chatgpt写一写GUI程序&#xff0c;也就是你常看到的桌面图形程序。 由于第一次测试&#xff0c;就来个简单点的&#xff0c;用Python写用…

GPU Burn测试指导

工具下载链接&#xff1a; https://codeload.github.com/wilicc/gpu-burn/zip/master测试方法&#xff1a; 上传工具到操作系统下&#xff0c;解压缩工具&#xff0c;使用make命令完成编译&#xff08;确保cuda环境变量已经配置成功、 nvcc -v能显示结果&#xff09;。 如果安…

文献速递:多模态深度学习在医疗中的应用--多模式婴儿脑分割技术:模糊引导深度学习

Title 题目 Multimodal Infant Brain Segmentation by Fuzzy-informed Deep Learning 多模式婴儿脑分割技术&#xff1a;模糊引导深度学习 01 文献速递介绍 日益普及的非侵入式婴儿脑磁共振图像&#xff08;MRI&#xff09;为准确理解脑主要发展轨迹的动态性提供了机会&…

树莓派|串口通信协议

1、串口通信原理 串口通讯(Serial Communication)&#xff0c;是指外设和计算机间&#xff0c;通过数据信号线、地线等&#xff0c;按位进行传输数据的一种通讯方式。串口是一种接口标准&#xff0c;它规定了接口的电气标准&#xff0c;没有规定接口插件电缆以及使用的协议。串…

“ModuleNotFoundError: No module named ‘selenium‘”报错如何解决

接上节&#xff1a;测试平台开发之测试框架改造并发执行及结果隔离(1) 上节博客的末尾提到&#xff1a;在命令窗口执行python main.py 可是执行的时候遇到了如下报错&#xff1a; ERRORS _____________________________________________________________ ERROR collecting te…

如何安全高效地进行4S店文件分发,保护核心资产?

4S店与总部之间的文件分发是确保双方沟通顺畅、信息共享和决策支持的重要环节。4S店文件分发涉及到以下文件类型&#xff1a; 销售报告&#xff1a;4S店需要定期向总部提交销售报告&#xff0c;包括销售数量、销售额、市场份额等关键指标。 库存管理文件&#xff1a;包括车辆库…

使用docker创建hadoop集群:Couldn‘t upload the file

运行的环境; Windows10 Docker Desktopdocker-hadoop 出现的问题如下: 解决方法 https://github.com/big-data-europe/docker-hadoop/issues/98

Unity Pixels Per Unit 与 Sprite Renderer Scale的逻辑关系,为什么平铺的Sprite Renderer会变形?

SpriteRenderer之前用的比较基础&#xff0c;没遇到过什么问题&#xff0c;这几天使用SpriteRenderer的平铺时发现平铺变形了&#xff0c;研究了一下&#xff0c;原来有这么多在逻辑在里面。 当我们导入图片选择Texture Type为Sprite时表示我们的图片用途是UI或者SpriteRendere…

【go项目01_学习记录12】

代码组织 1 代码结构2 重构与测试2.1 安装测试功能2.2 testify 的常用断言函数 3 表组测试 1 代码结构 所有的代码写在一个main.go文件里面&#xff0c;GO编译器也是可以正常执行的。但是当代码量很庞大时&#xff0c;很难进行维护。 Go Web 程序的代码组织 单文件——反模式…

C语言笔记15

指针2 1.数组名的理解 int arr[ 10 ] { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }; int *p &arr[ 0 ];17391692786 arr是数组名&#xff0c;数组名是首元素地址&#xff0c;&arr[0]就是取出首元素的地址放在指针变量p中。 #include <stdio.h> int main()…

基于GWO灰狼优化的CNN-GRU-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络&#xff08;CNN&#xff09;在时间序列中的应用 4.2 GRU网络 4.3 注意力机制&#xff08;Attention&#xff09; 4.4 GWO优化 5.算法完整程序工程 1.算法运行效果图预览…

ChatGlm的部署和训练

一、chatGlm的环境部署 1.安装anocoda 下载安装anaconda。具体教程详见官网教程。 2.安装CUDA 1&#xff09;首先在终端查看你的Nividian版本&#xff0c;命令如下&#xff1a; 2)如果你没有下载你要去下载cuda下载网站&#xff0c;这里是12.3是因为我cuda version版本12…