EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(三)FEEMD

2023-12-20 17:12

本文主要是介绍EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(三)FEEMD,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

往期精彩内容:

风速预测(一)数据集介绍和预处理-CSDN博客

风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客

风速预测(三)EMD-LSTM-Attention模型-CSDN博客

风速预测(四)基于Pytorch的EMD-Transformer模型-CSDN博客

风速预测(五)基于Pytorch的EMD-CNN-LSTM模型-CSDN博客

风速预测(六)基于Pytorch的EMD-CNN-GRU并行模型-CSDN博客

前言

EEMD在 EMD 算法 基础上加入了白噪声,以集合平均的方式消除模态重叠现象,但是这种算法的实时性不好。

一方面,EEMD 算法需要进行多组 EMD 分解求平均,而在一次 EMD 分解过程中需要 经过很多次迭代才能分解出 IMF,这就需要进行大量的计算,使得 CPU 的执行效率很慢;

另一方面,EEMD 算法的参数选择主要依靠经验确定,主观性大,该算法中包含两个重要的参数:添加的辅助 白噪声的大小以及集合平均次数。

通常情况下,这两个参数都是根据经验进行设置,那么使 用 EEMD 在对信号进行处理时,由于参数设置的主观性使得结果可能并不是最优的。综合 来说,EEMD 算法会有计算量大和参数设置具有主观性这两个缺陷[1]。

 1 快速集合经验模态分解FEEMD介绍

EEMD简介:

FEEMD(Fast Ensemble Empirical Mode Decomposition)是 EEMD 的一种快速实现,它 是由 Wang 等 2014 年在集成经验模态分解(EEMD)基础上改进的一种分解算法。

FEEMD 能 够快速、充分地分解非平稳、非线性的时间序列数据,有效改善了经验模态分解(EMD)中的 模态重叠效应以及 EEMD 算法中庞大的运算量问题。其基本思想是 Hilbert-Huang 变换。 FEEMD 优化了传统 EEMD 算法中样条差值过程和停止判断准则,提高了算法执行的时效 性,能快速将原始序列拆解成一系列低频的本征模态函数(intrinsic mode functions,IMFs)和 一个残差序列。

2 FEEMD分解的步骤

2.1 参数设置 

(1)设 k 为白噪声与信号幅值(原始序列)标准差的比值,k 一般取 0.1~0.4; 

(2)设 NE 为组数(添加噪声的次数),NE=100 通常会产生令人满意的结果,并使残 余噪声的误差小于 1%;

(3)设 NS 为迭代筛选的次数,NS=10 将会使 EEMD 成为一个几乎完美的噪声二进滤 波器,同时保持 IMF 的上下包络线相对于零线几乎对称; 

(4)设nm是选择有效的IMF个数(每个组得到的IMF个数可能不一样),nm=log2(n), 其中 n 是时间序列的长度。 

2.2 分解步骤 

(1)输入原始信号,设置集成数目和复制倍数,同时在原始信号中添加一个 Gauss 白 噪声序列; 

(2)将添加白噪声后的信号分解成若干 IMFs 和一个残差序列; 

(3)利用不同的白噪声序列重复上述步骤,直到达到算法的最大迭代次数; 

(4)求各本征模态函数和残差序列的均值,即可得到原始信号的最终拆解序列。

3 FEEMD优缺点

3.1 信号分量的处理

FEEMD得到了信号的分量,可以进行许多不同的分析和处理操作,以下是一些常见的对分量的利用方向:

(1)信号重构:将分解得到的各个本征模态函数(IMF)相加,可以重构原始信号。这可以用于验证分解的效果,或者用于信号的重建和恢复。

(2)去噪:对于复杂的信号,可能存在噪声或干扰成分。通过分析各个IMF的频率和振幅,可以识别和去除信号中的噪声成分。

(3)频率分析:分析每个IMF的频率成分,可以帮助理解信号在不同频率上的振荡特性,从而揭示信号的频域特征。

(4)特征提取:每个IMF代表了信号的局部特征和振荡模式,可以用于提取信号的特征,并进一步应用于机器学习或模式识别任务中。

(5)信号预测:通过对分解得到的各个IMF进行分析,可以探索信号的未来趋势和发展模式,从而用于信号的预测和预测建模。

(6)模式识别:分析每个IMF的时域和频域特征,可以帮助对信号进行模式识别和分类,用于识别信号中的不同模式和特征。

(7)异常检测:通过分析每个IMF的振幅和频率特征,可以用于探测信号中的异常或突发事件,从而用于异常检测和故障诊断。

在得到了信号的分量之后,可以根据具体的应用需求选择合适的分析和处理方法,以实现对信号的深入理解、特征提取和应用。

3.2 FEEMD优缺点

相比 EMD 算法,FEEMD 算法优化了停止判断准则。在 EMD 中,以标准差准则作为 IMF 分量停止判断条件,这可能会出现筛选次数过多的情况;而 FEEMD 对其改进使用的是 循环筛选准则,即固定一个循环筛选次数,这将直接提高 EMD 算法的执行效率。相比于 EEMD 算法,FEEMD 主要优势在于优化了参数,在参数的设定上比 EEMD 更具有理论依 据,同时效率提高。 

但是 FEEMD 也是有缺陷的,有实验表明经过 FEEMD 分解的序列仍然可能存在模态混 叠效应,只是相比 EMD 有所改善,因此模态混叠效应没有得到根本上的解决;另外,FEEMD 分解会出现两端发散的现象,即端点效应,并且还会逐渐向内进行传播,这种现象可能会加 剧模态混叠和伪分解问题。

参考文献

[1]《非平稳数据分解理论  从入门到实践》.蒋锋,杨华.中国财政经济出版社.

这篇关于EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(三)FEEMD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/516816

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount