PyEMD

PyEMD

全面高效的Python经验模态分解库

PyEMD是一个功能全面的Python库,专注于实现经验模态分解(EMD)算法及其变体。该库支持多种EMD变种,如集合EMD(EEMD)和完整集合EMD(CEEMDAN),并提供多样化的配置选项。PyEMD支持多种样条函数、停止准则和极值插值方法,适用于信号处理和数据分析。此外,PyEMD还包含二维EMD和即时编译EMD等实验性功能,为研究提供了更多可能性。

PyEMD经验模态分解信号处理Python库Github开源项目EMD

codecov DocStatus Codacy Badge DOI

PyEMD

链接

简介

经验模态分解(EMD)的Python实现。该软件包包含多种EMD变体,并计划在未来提供更多。

EMD变体

  • 集成EMD(EEMD)
  • "完全集成EMD"(CEEMDAN)
  • 原始EMD的不同设置和配置
  • 图像分解(EMD2D和BEMD)(实验性,不提供支持)
  • 即时编译EMD(JitEMD)

PyEMD允许您使用不同的样条曲线进行包络线插值,以及不同的停止准则和极值插值方法。

可用的样条曲线

  • 自然三次样条(默认
  • 点wise三次样条
  • 埃尔米特三次样条
  • Akima样条
  • PChip样条
  • 线性样条

可用的停止准则

  • 柯西收敛准则(默认
  • 固定迭代次数
  • 连续原型IMF的数量

极值检测

  • 离散极值(默认
  • 抛物线插值

安装

PyPi(推荐)

安装软件包最快的方法是通过pip

$ pip install EMD-signal

这样您就可以安装PyEMD在PyPi上托管的最新稳定版本

从源代码安装

如果您只想使用EMD及其变体,通过pip安装PyEMD是最好的方法。 但是,如果您想要PyEMD的最新版本,或者出于某种原因想要下载代码并自己构建软件包,也可以这样做。 源代码是公开的,托管在GitHub上。 要下载代码,您可以进入源代码页面并点击Code -> Download ZIP,或使用git命令行

$ git clone https://github.com/laszukdawid/PyEMD

从源代码安装软件包使用以下命令行:

$ python3 -m pip install .

在进入由git创建的PyEMD目录后执行此命令。

从源代码安装PyEMD的更快方法是在同一命令中使用pipgit

$ python3 -m pip install git+https://github.com/laszukdawid/PyEMD.git

注意,这将在当前环境中安装它。如果您在处理多个项目,或与他人共享资源,我们建议使用虚拟环境。 如果您想使安装可编辑,请使用pip-e标志

示例

更详细的示例包含在文档中或 PyEMD/examples目录中。

EMD

在大多数情况下,默认设置就足够了。只需导入EMD并将您的信号传递给实例或emd()方法。

from PyEMD import EMD import numpy as np s = np.random.random(100) emd = EMD() IMFs = emd(s)

下图是使用以下输入生成的: $S(t) = cos(22 \pi t^2) + 6t^2$

simpleExample

EEMD

使用集成EMD(EEMD)最简单的方法是导入EEMD并将您的信号传递给实例或eemd()方法。

Windows:请不要跳过if __name__ == "__main__"部分。

from PyEMD import EEMD import numpy as np if __name__ == "__main__": s = np.random.random(100) eemd = EEMD() eIMFs = eemd(s)

CEEMDAN

与前面的方法一样,使用CEEMDAN也有一种简单的方法。

Windows:请不要跳过if __name__ == "__main__"部分。

from PyEMD import CEEMDAN import numpy as np if __name__ == "__main__": s = np.random.random(100) ceemdan = CEEMDAN() cIMFs = ceemdan(s)

可视化

该软件包包含一个简单的可视化辅助工具,可以帮助您,例如,处理时间序列和瞬时频率。

import numpy as np from PyEMD import EMD, Visualisation t = np.arange(0, 3, 0.01) S = np.sin(13*t + 0.2*t**1.4) - np.cos(3*t) # 提取内在模态函数(IMF)和残余 # 对于EMD emd = EMD() emd.emd(S) imfs, res = emd.get_imfs_and_residue() # 一般情况: #components = EEMD()(S) #imfs, res = components[:-1], components[-1] vis = Visualisation() vis.plot_imfs(imfs=imfs, residue=res, t=t, include_residue=True) vis.plot_instant_freq(t, imfs=imfs) vis.show()

实验性功能

JitEMD

即时(JIT)编译的EMD是EMD的一个版本,它在处理非常大的信号或多次重复使用同一实例时表现出色。强烈建议在使用Jupyter笔记本进行实验时使用它,特别是在修改输入而不是方法本身时。

JIT的问题在于编译发生在第一次执行时,这可能会耗费大量时间。对于小型信号或只执行一次分解,额外的编译时间将明显大于分解时间,从而降低性能。

更多信息请参阅文档或示例了解如何使用代码。 这是实验性的,因为它的价值仍有待商榷,而且作者(我)并不精通JIT优化,所以可能会出现错误。

欢迎任何反馈。如果有兴趣,我很乐意改进。请提交问题单提出问题和建议。

要在PyEMD中启用JIT,请使用jit选项安装,即

$ pip install EMD-signal[jit]

EMD2D/BEMD

遗憾的是,这是实验性的,我们不能保证输出是有意义的。 最简单的用法是将图像作为单色numpy 2D数组传递。与其他模块一样,可以使用实例的默认设置,或者更明确地使用emd2d()方法。

from PyEMD.EMD2d import EMD2D #, BEMD import numpy as np x, y = np.arange(128), np.arange(128).reshape((-1,1)) img = np.sin(0.1*x)*np.cos(0.2*y) emd2d = EMD2D() # BEMD()也可以 IMFs_2D = emd2d(img)

常见问题

为什么EEMD/CEEMDAN这么慢?

不幸的是,这是它们的本质。它们每次都执行多次EMD,每次都稍微修改版本。添加的噪声可能会导致许多极值的产生,这将降低自然三次样条的性能。关于如何解决这个问题的一些技巧,请参阅文档中的加速技巧

联系方式

如果你有任何问题、请求或只是想打个招呼,请随时联系我。 知道我帮助了某人或使他们的工作变得更容易总是很高兴的。 对项目做出贡献也是可以接受的,并且非常欢迎。

引用

如果你发现这个包很有用,并想在你的工作中引用它, 请使用以下结构:

@misc{pyemd, author = {Laszuk, Dawid}, title = {Python implementation of Empirical Mode Decomposition algorithm}, year = {2017}, publisher = {GitHub}, journal = {GitHub Repository}, howpublished = {\url{https://github.com/laszukdawid/PyEMD}}, doi = {10.5281/zenodo.5459184} }

编辑推荐精选

Pixmax

Pixmax

一站式AI短剧创作平台

Pixmax专注打造下一代“ AI 视觉创作引擎”,整合行业顶尖 AI 大模型、工工业级精准控制及企业级协同管理功能,是全方位的 AI 内容创作平台。

豆包

豆包

字节跳动旗下 AI 智能助手

字节跳动旗下 AI 智能助手

GPT Plus|Pro充值

GPT Plus|Pro充值

GPT充值

支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。

GPT Image 2中文站

GPT Image 2中文站

AI 图片生成平台

GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。

Vecbase

Vecbase

你的AI Agent团队

Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

下拉加载更多