Project Icon

PyEMD

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

PyEMD是一个功能全面的Python库,专注于实现经验模态分解(EMD)算法及其变体。该库支持多种EMD变种,如集合EMD(EEMD)和完整集合EMD(CEEMDAN),并提供多样化的配置选项。PyEMD支持多种样条函数、停止准则和极值插值方法,适用于信号处理和数据分析。此外,PyEMD还包含二维EMD和即时编译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}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号