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

往期精彩内容:

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

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

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

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

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

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

前言

本文基于前期介绍的风速数据(文末附数据集),进行集成经验模态算法(Ensemble Empirical Mode Decomposition,EEMD)的介绍与参数选择,最后通过Python实现对风速数据的EEMD分解。风速数据集的详细介绍可以参考下文:

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

Python 中 EEMD包的下载安装:

# 下载
pip install EMD-signal
# 导入
from PyEMD import EEMD

切记,很多同学安装失败,不是pip install EMD,也不是pip install PyEMD, 如果 pip list 中 已经有 emd,emd-signal,pyemd包的存在,要先 pip uninstall 移除相关包,然后再进行安装。

1 集成经验模态算法EEMD介绍

1.1 EEMD简介

集成经验模态算法(Ensemble Empirical Mode Decomposition,EEMD)方法是吴兆华和黄锷[1]于 2009 年为克服 EMD 的模态混叠而提出一种噪声辅助信号分析方法。 

EEMD 利用了 EMD 的尺度分离能力,确保 EMD 方法对任何数据都是二进滤波器组3。 通过加入有限噪声,EEMD 在很大程度上消除了模态混合问题,并保持了分解的物理唯一 性。 

EEMD 定义 IMF 为试验集合的平均值,每个试验都由信号加上一个有限振幅的白噪声 组成。通过这种集成方法可以很自然清晰地分离尺度,而无需任何先验的主观标准选择。

1.2 EEMD主要特点:

  • 引入噪声: EEMD 引入了随机噪声(通常是白噪声),以打破原始信号的固有对称性,避免模态重叠和端效应。

  • 多次迭代: EEMD 对每一次迭代都会生成不同的噪声序列,然后将原始信号与不同噪声序列相加进行多次迭代。每次迭代产生一组 IMFs。

  • 模态平均: 对于每次迭代,得到的 IMFs 通过多次重复迭代得到的 IMFs 进行平均。这种模态平均有助于降低随机性引入的影响,提高结果的稳定性。

2 EEMD分解的步骤

  • 初始化: 将原始信号进行初始化,并选择要添加到信号中的噪声类型和水平。

  • 迭代过程: 对于每次迭代,将随机噪声序列与原始信号相加,然后进行经验模态分解(EMD)以获得 IMFs。

  • 累积: 累积每次迭代得到的 IMFs,得到累积的 IMFs。

  • 模态平均: 对累积的 IMFs 进行模态平均,得到最终的 EEMD 结果。

3 基于Python的EEMD实现

3.1 导入数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')
# 读取已处理的 CSV 文件
df = pd.read_csv('wind_speed.csv' )
# 取风速数据
winddata = df['Wind Speed (km/h)'].tolist()
winddata = np.array(winddata) # 转换为numpy
# 可视化
plt.figure(figsize=(15,5), dpi=100)
plt.grid(True)
plt.plot(winddata, color='green')
plt.show()

3.2 EEMD分解

from PyEMD import EEMD# 创建 EEMD 对象
eemd = EEMD(trials=200, noise_width=0.2)
# 对信号进行 EEMD分解
IMFs = eemd(winddata)# 可视化
plt.figure(figsize=(20,15))
plt.subplot(len(IMFs)+1, 1, 1)
plt.plot(winddata, 'r')
plt.title("原始信号")for num, imf in enumerate(IMFs):plt.subplot(len(IMFs)+1, 1, num+2)plt.plot(imf)plt.title("IMF "+str(num+1), fontsize=10)
# 增加第一排图和第二排图之间的垂直间距
plt.subplots_adjust(hspace=0.8, wspace=0.2)
plt.show()

参数:

  • trials:迭代次数(集总平均次数),一般在几百次以上,非常耗时。虽然增加集合平均次数可降低重构误差, 但这是以增加计算成本为代价,且有限次数的集合平均并不能完全消除白噪声,导致算法重 构误差大,分解完备性差

  • noise_width:添加的白噪声幅值

3.3 信号分量的处理

通过集成经验模态算法(EEMD)得到了信号的分量,可以进行许多不同的分析和处理操作,以下是一些常见的对分量的利用方向:

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

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

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

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

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

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

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

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

3.4 EEMD优缺点

优点:

  • 提高稳定性: EEMD 通过引入噪声和多次迭代的方式,提高了信号分解的稳定性,减轻了 EM D 中的一些问题,如模态重叠和端效应。

  • 随机性: 引入随机噪声的随机性有助于打破信号的对称性,提高了对非平稳信号的适应能力。

  • 模态平均: 模态平均降低了随机性的影响,使得 EEMD 的结果更加可靠。

缺点:

  • 计算复杂度: EEMD 的计算复杂度较高,尤其是对于较长的信号序列。

  • 参数选择: 对于 EEMD,需要合适地选择引入的噪声类型和水平,以及迭代的次数等参数。

集总平均后的 IMF 可能不再符合 IMF 的要求(偏差一般较小,不影响瞬时频率的计算)。 白噪声在集总平均之后基本抵消,但存在残留的白噪声,重建之后噪声不可忽略[2]。

参考文献

[1] Huang NE, Shen Z, Long SR, et al. The empirical mode decomposition and the Hilbert spectrum for nonlinear and non-stationary time series analysis. The Royal Society,  1998,454:903-995.

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

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

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

相关文章

鸿蒙 - arkTs:渲染(循环 - ForEach,判断 - if)

ForEach循环渲染: 参数: 要循环遍历的数组,Array类型遍历的回调方法,Function类型为每一项生成唯一标识符的方法,有默认生成方法,非必传 使用示例: interface Item {name: String,price: N…

作物模型中引入灌溉参数

在没有设置灌溉时,土壤水分模拟结果如下找到了PCSE包中田间管理文件的标准写法 在agromanager.py中有详细的信息(如何设置灌溉以及施肥量) Version: 1.0 AgroManagement: - 2022-10-15:CropCalendar:crop_name: sugar-beetvariety_name:

HarmonyOS ArkTS 中DatePicker先择时间 路由跳转并传值到其它页

效果 代码 代码里有TextTimerController 这一种例用方法较怪,Text ,Button Datepicker 的使用。 import router from ohos.router’则是引入路由模块。 import router from ohos.router Entry Component struct TextnewClock {textTimerController: TextTimerContr…

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜E

老老规矩,看目录,平均每年2E,跟2D一样,D是全对,E是全错,侧面也看出10道题,大概是3A/B,3C,2D,2E,其实还是蛮平均的。但E为1道的情况居多。 第20题…

Postgresql中自增主键序列的使用以及数据传输时提示:错误:关系“xxx_xx_xx_seq“不存在

场景 Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入: Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入-CSDN博客 上面讲使用pg_dump进行postgresql的导出与导入。 如果使用Navicat可以直接连接两个库,则可直接使…

材料论文阅读/中文记录:Scaling deep learning for materials discovery

Merchant A, Batzner S, Schoenholz S S, et al. Scaling deep learning for materials discovery[J]. Nature, 2023: 1-6. 文章目录 摘要引言生成和过滤概述GNoME主动学习缩放法则和泛化 发现稳定晶体通过实验匹配和 r 2 S C A N r^2SCAN r2SCAN 进行验证有趣的组合家族 扩大…

通用的java中部分方式实现List<自定义对象>转为List<Map>

自定义类 /*** date 2023/12/19 11:20*/ public class Person {private String name;private String sex;public Person() {}public Person(String name, String sex) {this.name name;this.sex sex;}public String getName() {return name;}public String getSex() {return…

鸿蒙Harmony4.0开发-ArkTS基础知识运用

概念 1.渲染控制语法: 条件渲染:使用if/else进行条件渲染。 Column() {if (this.count > 0) {Text(count is positive)} }循环渲染:开发框架提供循环渲染(ForEach组件)来迭代数组,并为每个数组项创建…

2023人物专访「中国新时代艺坛楷模」蓝弘艺术专题报道

蓝弘,名文珺,广东客家人。十六届人大代表,广州蓝弘艺术中心创办人,民建中央画院广东分院副院长,广东省美术家协会会员,广州江海地区书画家协会会长。 蓝弘画家被世界教科组织联合协会评为“世界艺术大使”…

【操作系统】快速做题向 优先权调度(抢占式/非抢占式)算法做题步骤分析

理论知识理解上面这几句话就行。 抢占,非抢占的区别就是,能不能直接中断某正在进行的优先级没我高的进程的运行。 非抢占只要某进程已经在运行了,后面不论出现多少优先级多高的进程,都得老老实实等待这个进程运行完毕&#xff0…

RuntimeError: Inference tensors do not track version counter.

问题&#xff1a; Testing DataLoader 0: 0%| | 0/78 [00:00<?, ?it/s]Failed to collect metadata on function, produced code may be suboptimal. Known situations this can occur are inference mode only compilation involving resize_ or prims (!sc…

NFC标签写入网址,NTAG213写入网址URL

NFC标签常用的有NTAG213,/215/216以及国产的F8123&#xff0c;可以写入网址&#xff0c;应用在产品身份识别&#xff0c;溯源&#xff0c;防伪等&#xff0c;我们使用NFC读写器ACR122u可以批量快速的写入网址URL 一、打开软件 二、把需要写的网址&#xff0c;整理到Excel表格中…

mysql中的数据类型和表操作【MYSQL】

mysql中的数据类型和表操作MYSQL】 一. 表结构操作1.1创建及删除表结构i. 创建表ii. 查看表结构iii. 删除表 1.2 修改表结构i. 修改表名ii. 添加新字段iii. 修改字段中的属性iiii. 删除字段 二. 表中类型2.1 int类型2.2 bit类型2.3 浮点类型i. float类型ii. decimal类型 2.4 字…

智能优化算法应用:基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑寡妇算法4.实验参数设定5.算法结果6.参考文…

LeetCode刷题--- 子集

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题【 http://t.csdnimg.cn/yUl2I 】【C】 【 http://t.csdnimg.cn/6AbpV 】数据结构与算法【 http://t.csdnimg.cn/hKh2l 】 前言&#xff1a;这个专栏主要讲…

【BEV感知】BEVFormer 融合多视角图形的空间特征和时序特征 ECCV 2022

前言 本文分享BEV感知方案中&#xff0c;具有代表性的方法&#xff1a;BEVFormer。 它基于Deformable Attention&#xff0c;实现了一种融合多视角相机空间特征和时序特征的端到端框架&#xff0c;适用于多种自动驾驶感知任务。 主要由3个关键模块组成&#xff1a; BEV Que…

【源码】基于SpringBoot+thymeleaf实现的快递之家管理系统

系统介绍 基于SpringBootthymeleaf实现的快递之家管理系统是为学校打造的高效的快递管理系统&#xff0c;系统分为管理员、注册用户两类角色&#xff0c;一共是分为三大菜单项&#xff0c;分别是我的物流、个人管理、后台管理&#xff0c;管理员拥有全部菜单&#xff0c;注册用…

【大数据实训】python石油大数据可视化(八)

2014到2020年石油加工产品产量数据处理分析 一、任务描述 石油是工业的命脉。 一直到2020年&#xff0c;我国原油产量基本处于平稳的状态&#xff0c;大部分原油来自国外进口&#xff1b;中国原油加工产量在华东、东北地区占比较大&#xff0c;华南地区相对较少。原油的加工企业…

打破枯燥工作日,用Python统计键盘和鼠标点击次数,钉钉告诉你今天摸鱼了多少次!

1 前言 是否曾想过&#xff0c;在一天的工作中&#xff0c;你到底点击了键盘多少次&#xff0c;或者鼠标点击了多少下&#xff1f; 是否好奇每天工作的时候&#xff0c;自己究竟有多努力&#xff1f; 本文将带你使用 Python&#xff0c;利用 pynput 监听键盘和鼠标事件&…