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

目录

前言

1 完全自适应噪声集合经验模态分解CEEMDAN介绍

1.1 CEEMDAN简介

1.2 CEEMDAN主要特点

2 CEEMDAN分解的步骤

3 基于Python的CEEMDAN实现

3.1 导入数据

3.2 CEEMDAN分解

3.3 信号分量的重构

3.4 信号分量的处理

3.5 CEEMDAN优缺点


往期精彩内容:

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

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

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

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

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

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

前言

本文基于前期介绍的风速数据(文末附数据集),进行完全自适应噪声集合经验模态分解(CEEMDAN)的介绍与参数选择,最后通过Python实现对风速数据的CEEMDAN分解。风速数据集的详细介绍可以参考下文:

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

Python 中 CEEMDAN包的下载安装:

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

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

1 完全自适应噪声集合经验模态分解CEEMDAN介绍

1.1 CEEMDAN简介

针对 EMD 算法分解信号存在模态混叠的问题,EEMD 和 CEEMD 分解算法通过在待分解信号中加入随机白噪声来减轻 EMD 分解的模态混叠,但是这两种算法分解信号得到的模态分量中总会残留一定的白噪声,并且信号加噪声经EMD分解可能会产生不同数量的模态, 这将影响后续信号的分析和处理,为了解决这些问题,TORRES 等提出了一种改进算法— —完全自适应噪声集合经验模态分解(CEEMDAN)。

1.2 CEEMDAN主要特点

CEEMDAN 分解从两个方面解决了上 述问题:

  • 每次迭代加入经 EMD 分解后含辅助噪声的 IMF 分量; 

  • EEMD 分解和 CEEMD 分解是将经验模态分解后得到的模态分量进行总体平均, CEEMDAN 分解则在得到的第一阶 IMF 分量后就进行总体平均计算,得到最终的第一阶 IMF 分量,然后对残余部分重复进行如上操作,这样便有效地解决了白噪声从高频到低频的转移传递问题。

2 CEEMDAN分解的步骤

(1) EEMD 方法是将添加白噪声后的 M 个信号直接做 EMD 分解,然后相对应的 IMF 间直接 求均值。

(2) CEEMDAN 方法是每求完一阶 IMF 分量,又重新给残值加入白噪声(或白噪声的 IMF 分 量)并求此时的 IMF 分量均值,并逐次迭代。

3 基于Python的CEEMDAN实现

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 CEEMDAN分解

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

参数:

  • trials:迭代次数(集总平均次数),默认100

  • epsilon:信噪比,默认0.005

3.3 信号分量的重构

# 分量重构
reconstructed_data = np.sum(IMFs, 0) # 沿y轴方向求和plt.figure(figsize=(15,5))
plt.plot(winddata, linewidth=1, color='hotpink', label='PM2.5')
plt.plot(reconstructed_data, linewidth=1, color='c', label='分解重构结果')
plt.title("CEEMDAN 分解重构结果", fontsize=10, loc='center')
plt.xticks(fontsize=10) # x 轴刻度字体大小
plt.yticks(fontsize=10) # y 轴刻度字体大小
plt.legend(loc='upper right') # 绘制曲线图例,信息来自类型 label
plt.show()

对比 EMD 重构:

CEEMDAN分解重构效果明显好于EMD!

3.4 信号分量的处理

通过完全自适应噪声集合经验模态分解(CEEMDAN)得到了信号的分量,可以进行许多不同的分析和处理操作,以下是一些常见的对分量的利用方向:

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

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

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

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

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

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

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

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

3.5 CEEMDAN优缺点

优点:

  • 完备性,即把分解后的各个分量相加能够获得原信号的性质。 

  • 更快的计算速度,正是由于上一条,相较于 EEMD 该方法不需要太多的平均次数,可以 有效提升程序运算速度。 

  • 更好的模态分解结果,EEMD 分解可能会出现多个幅值很小的低频 IMF 分量,这些分量 对于信号分析意义不大,CEEMDAN 方法可以减少这些分量数目。

  • 解决了 EEMD 算法中会出现不同模态数量的问题。

缺点:

  • 模态中仍包含一些残余噪声;

  • 与 EEMD 相比,在分解的早期阶段存在一些“伪”模态,即前两种或三种模式包含大量的相 似噪声和类似的信号尺度(ICEEMDAN 解决了该问题);

  • 利用 CEEMDAN 算法分解含噪声信号时,若将含噪声较多的 IMF 分量直接舍弃,容易造 成有效信息的缺失

参考文献

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

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

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

相关文章

Qt designer界面和所有组件功能的详细介绍(全!!!)

PyQt5和Qt designer的详细安装教程:https://blog.csdn.net/qq_43811536/article/details/135185233?spm1001.2014.3001.5501 目录 1. 界面介绍2. Widget Box 常用组件2.1 Layouts(布局)2.2 Spacers(间隔器)2.3 Item V…

【黑马甄选离线数仓day10_会员主题域开发_DWS和ADS层】

day10_会员主题域开发 会员主题_DWS和ADS层 DWS层开发 门店会员分类天表: 维度指标: 指标:新增注册会员数、累计注册会员数、新增消费会员数、累计消费会员数、新增复购会员数、累计复购会员数、活跃会员数、沉睡会员数、会员消费金额 维度: 时间维度&#xff08…

网络7层架构

网络 7 层架构 什么是OSI七层模型? OSI模型用于定义并理解数据从一台计算机转移到另一台计算机,在最基本的形式中,两台计算机通过网线和连接器相互连接,在网卡的帮助下共享数据,形成一个网络,但是一台计算…

8、SpringCloud高频面试题-版本1

1、SpringCloud组件有哪些 SpringCloud 是一系列框架的有序集合。它利用 SpringBoot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 SpringBoot 的开发风格做到一键启…

湘潭大学-软件工程-选择判断题复习

说明 期末考试单选题和判断题占30分,单选20,判断10分 单选题 选错误的 B依靠松散组合的互联网大众是无法开发出高质量软件产品的 D、所有命名都应尽量使用缩写 C、采用团队的组织方式 D、软件需求一旦确定就不允许变化 以下哪一项是通过运行程序…

全方位掌握卷积神经网络:理解原理 优化实践应用

计算机视觉CV的发展 检测任务 分类与检索 超分辨率重构 医学任务 无人驾驶 整体网络架构 卷积层和激活函数(ReLU)的组合是网络的核心组成部分 激活函数(ReLU) 引入非线性,增强网络的表达能力。 卷积层 负责特征提取 池化层…

MySQL——复合查询

目录 一.基本查询回顾 二. 多表查询 三.自连接 四.子查询 1.单行子查询 2.多行子查询 3.多列子查询 4.在from子句中使用子查询 5.合并查询 一.基本查询回顾 准备数据库: 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为…

.net core 生成jwt+swagger-通过 IHttpContextAccessor读取token信息

1.安装jwt相关包 <ItemGroup><PackageReference Include"Microsoft.AspNetCore.Authentication.JwtBearer" Version"6.0.25" /><PackageReference Include"Microsoft.IdentityModel.Tokens" Version"7.0.3" /><P…

一个简单的设置,就能摆脱iPad音量键随方向变的困扰

新款iPad Air 5的发布和iPhone SE 3的评审可能是苹果本月最大的新闻&#xff0c;但该公司也悄悄发布了一项功能&#xff0c;自2010年发布第一款以来&#xff0c;iPad用户一直在等待&#xff1a;音量按钮现在在横向模式下很有意义。让我们解释一下。 每台iPad侧面的音量按钮在人…

HTML面试题

HTML 面试题汇总 1. 什么是 <!DOCTYPE>&#xff1f;是否需要在 HTML5 中使用&#xff1f; 参考答案&#xff1a; 它是 HTML 的文档声明&#xff0c;通过它告诉浏览器&#xff0c;使用哪一个 HTML 版本标准解析文档。 在浏览器发展的历史中&#xff0c;HTML 出现过很多个…

032 - STM32学习笔记 - TIM基本定时器(一) - 定时器基本知识

032 - STM32学习笔记 - TIM定时器&#xff08;一&#xff09; - 基本定时器知识 这节开始学习一下TIM定时器功能&#xff0c;从字面意思上理解&#xff0c;定时器的基本功能就是用来定时&#xff0c;与定时器相结合&#xff0c;可以实现一些周期性的数据发送、采集等功能&#…

连锁便利店管理系统有什么用

连锁便利店管理系统对于连锁便利店的运营和管理非常有用。以下是一些常见的用途&#xff1a; 1. 库存管理&#xff1a;连锁便利店通常需要管理多个门店的库存&#xff0c;管理系统可以帮助实时掌握各个门店的库存情况&#xff0c;包括商品数量、进货记录、库存调拨等。这样可以…

服务器数据恢复-误操作导致xfs分区数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌OceanStorT系列某型号存储MD1200磁盘柜&#xff0c;组建的raid5磁盘阵列。上层分配了1个lun&#xff0c;安装的linux操作系统&#xff0c;划分两个分区&#xff0c;分区一通过lvm进行扩容&#xff0c;分区二格式化为xfs文件系统。 服务器…

Portainer.io:让容器管理变得更加直观

在现代软件开发和部署中&#xff0c;容器化技术已经变得越来越流行。Docker 是其中一种领先的容器化平台&#xff0c;而 Portainer.io 则是一个优秀的管理工具&#xff0c;使得 Docker 的使用变得更加简单和可视化。本文将介绍 Portainer.io 的基本功能和如何在 Docker 上安装和…

PyQt6 利用Pyinstaller打包发布程序

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计53条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

LangChain 30 ChatGPT LLM将字符串作为输入并返回字符串Chat Model将消息列表作为输入并返回消息

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

装前必看施工干货,贴瓷砖的5大步骤。福州中宅装饰,福州装修

亲爱的朋友们&#xff0c;你们是否曾经在装修房屋时遇到过贴砖的难题呢&#xff1f;贴砖可是装修工程中一项重要的工艺&#xff0c;它直接影响到整个装修的效果和质量。今天&#xff0c;我就来跟大家分享一下贴砖的几个重要要点&#xff0c;希望对你们有所帮助。 1️⃣ 选材是关…

2023 年人工智能研究与技术排名前 10 的国家

人工智能研究是一项全球性的工作。虽然美国和中国因其对人工智能的贡献而备受关注&#xff0c;但事实是&#xff0c;世界各国都在涉足这项技术&#xff0c;尝试新的突破&#xff0c;并吸引投资者的关注。 斯坦福大学的《2023年人工智能报告》估计&#xff0c;到 2022 年&#…

使用宝塔面板部署前端项目到服务器

目录 文章目录 前言 一、第一步&#xff1a;创建文件夹 二、第二步&#xff1a;部署前端项目 三、第三步&#xff1a;打开防火墙 文章目录 前言第一步&#xff1a;创建文件夹第二步&#xff1a;部署前端项目第三步&#xff1a;打开防火墙总结 前言 在此之前&#xff0c;我…