暂时打断一下滤波专题,插播一条EMD在python中实现方法的文章。

本篇是Mr.看海:这篇文章能让你明白经验模态分解(EMD)——EMD在MATLAB中的实现方法的姊妹篇,也就是要在python中实现EMD分解并画图。

一、使用PyEMD实现EMD分解及画图

在python环境中,PyEMD包是比较好用的。PyEMD中不仅包含了EMD分解方法,还包括EEMD和CEEMDAN,以及绘制简易图片的方式。

PyEMD的官方文档在这里:Intro - PyEMD 0.2.13 documentation

1.1 安装软件包

最简便的安装方式是使用pip安装,也就是在命令行窗口执行:

pip install EMD-signal

注意不是pip install PyEMD哈

另外还有一种手动下载源码安装的方式,具体方式在上边的官方文档里,这里就不详细介绍了。大多数情况下使用pip安装就行。

1.2 导入工具包

接下来就可以编写python脚本了,首先需要导入PyEMD工具包(以及过会儿要用的matplotlib,如果没有安装,需要在命令行窗口执行:pip install Matplotlib):

from PyEMD import EMD
import pylab as plt

生成一个随机信号:

import numpy  as np
s = np.random.random(100)

执行EMD分解:

emd = EMD()
IMF = emd.emd(s)

工具包内置了Visualisation可视化工具,但是使用下来并不是特别好用,这里使用Matplotlib画图。

官方提供了一段画图的程序:

N = IMF.shape[0]+1# Plot results
plt.subplot(N,1,1)
plt.plot(t, s, 'r')
plt.title("Input signal")
plt.xlabel("Time [s]")for n, imf in enumerate(IMF):plt.subplot(N,1,n+2)plt.plot(t, imf, 'g')plt.title("IMF "+str(n+1))plt.xlabel("Time [s]")plt.tight_layout()
plt.savefig('simple_example')
plt.show()

画出来是这样的:

咋说呢,有点差强人意。python绘制子图像的标题显示有些小bug,我们可以把它挪到左边,另外按照惯例,我们可以把最后一个分量的名称改成res。

二、画图的快速实现

我们在上述代码的基础上再次进行了封装,实现“一行代码”画图的目的。因为之前我们对MATLAB的“类EMD”分解方法画图有了一系列的方法,这里我们作为姊妹篇,在画图风格上也与之保持一致。

比如绘制EMD分解的时域图像,只需要调用这样一句:

imf = funEMD.pEMD(data,t)  #t为数据的时间轴,第二个入口参数也可以输入采样频率fs,会自动计算时间轴

画出来的图是这样的:

这样是不是更符合习惯一些了。

此外还可以绘制时域和频域的对比图,也只需要调用这样一句代码:

imf = funEMD.pEMDandFFT(data,t)  #t为数据的时间轴,第二个入口参数也可以输入采样频率fs,会自动计算时间轴

当然啦,如果你直接copy上边的两行代码是画不了图的,因为上述代码运行还依赖一些程序以及环境,不过总体来说还是比较简便易用的了。

需要注意的一点,上边的图片中用到的分析对象信号和在MATLAB那篇文章中是一样的,但是分解结果并不相同。虽然EMD分解的原理是相对明确的,但是在具体的编程实现的过程中还涉及很多具体计算过程,比如包络的求取、停止准则的选定等等,其中参数或者计算方式的变化都会影响到最终结果,MATLAB和python的EMD实现是两个不同的库,在这些细节之处难免存在差异(即使都是用在MATLAB上的官方库和第三方库之间都会有差异),所以使用python和MATLAB进行EMD分解得到的结果不同是正常现象。

如果想要获取上边的封装画图函数和应用案例,可以在下边的链接获取:

EMD画图工具(python版) | 工具箱文档

三、跨平台python补完计划

由于滤波专题讲完之后准备正式开始神经网络专题了,其中关于分类、预测等内容计划同时介绍在MATLAB和python两个平台上的实现方法,考虑到之前专栏基本都是使用MATLAB编程的,所以小编将会开启python补完计划,对于之前已经实现的类EMD分解、特征提取、降噪等等会逐步完善在python中的具体代码实现,希望能保住到有需要的同学们吧。

欢迎持续关注我的专栏与信号处理有关的那些东东。

【Python】这篇文章能让你明白经验模态分解(EMD)——EMD在python中的实现方法相关推荐

  1. 这篇文章能让你明白经验模态分解(EMD)——基础理论篇

    一.为什么要用EMD 在信号处理方面我们了解了时域处理方法(如有效值.峭度).频域处理方法(如频谱.功率谱)以及一些时频域处理方法(如小波分析)(详见专栏文章与信号处理有关的那些东东).时域和频域有各 ...

  2. 看完这篇文章之后,终于明白了编译到底怎么回事。

    看完这篇文章之后,终于明白了编译到底怎么回事. 1 对于同一个语句,有如下三种:高级语言.低级语言.机器语言的表示 C语言  a=b+1; 汇编语言  mov -0xc(%ebp),%eax add ...

  3. 看完这篇文章之后,终于明白了编译到底怎么回事

    看完这篇文章之后,终于明白了编译到底怎么回事. 1 对于同一个语句,有如下三种:高级语言.低级语言.机器语言的表示 C语言  a=b+1; 汇编语言  mov -0xc(%ebp),%eax add ...

  4. 经验模态分解与Python调用实例

    经验模态分解与Python调用实例 经验模态分解 Python代码实现 经验模态分解 如果需要对一个信号进行降噪的话,我们通常会尝试将一个时域信号变换到不同的域空间,以期将信号中的噪声和有效信号在该域 ...

  5. 使用EMD【经验模态分解】对一维波形信号进行滤波去噪以及Python实现代码[emd eemd ceemdan]

    使用EMD[经验模态分解]对一维波形信号进行滤波去噪以及Python实现代码 EMD[ Emprical Mode Decomposition]经验模态分解方法此处不再过多用赘述, 该信号处理方法可以 ...

  6. Python怎么读?这篇文章说的很明白

    python是一门非常火爆且相对易学的编程语言,应用在各种场景.许多人想学习这门python编程语言,就连地产大佬潘石屹也已经学习了python,足见python的魅力. 那么有不少人问python怎 ...

  7. Python 这篇文章告诉我Python实际中干什么事情

    一直心存疑虑:Python可以干什么事情? 对Python在企业级开发中的10大误解 lyxi | 2015-10-15 10:49    浏览量(216)    评论(0)   推荐(0) 数据 在 ...

  8. IGBT是啥?看完这篇文章你还不明白就不要再做电子行业。

    电的发现是人类历史的革命,由它产生的动能每天都在源源不断的释放,人对电的需求不亚于人类世界的氧气,如果没有电,人类的文明还会在黑暗中探索. 然而在电力电子里面,最重要的一个元件就是IGBT.没有IGB ...

  9. 关于GO语言,这篇文章讲的很明白

    摘要:本文从Go的语法,类型系统,编码风格,语言工具,编码工具和使用案例等几方面对Go语言进行了学习和探讨. Go语言发布之后,很多公司特别是云厂商也开始用Go语言重构产品的基础架构,而且很多企业都是 ...

最新文章

  1. 不职业不同睡姿,你是哪一种?
  2. 网络推广外包——竞价账户网络推广外包时怎样进行关键词推广?
  3. 简单的派生类构造函数C++
  4. PHP案例 网页计数器设计
  5. 【数据湖加速篇】 —— 数据湖结构化数据优化与查询加速方案
  6. 捡漏!用谷歌图片搜索自制深度学习数据集 | 教程
  7. MySQL事务及隔离级别详解
  8. Arquillian和Jboss的版本问题
  9. arduino的矩阵示例程序_用树莓派 Arduino 制造 LED 矩阵彩灯
  10. 没钱发工资?当着董事长总经理是好玩的,不用负责?
  11. (二)html 复杂表格
  12. 运放的电压比较器电路
  13. paddlepaddle手写字体识别
  14. pm2同时启动多个前端项目
  15. android 阻尼函数,数学的 H5 应用:拖动阻尼
  16. 如何查询网站dns服务器地址,如何查询DNS服务器地址 dns服务器地址查询方法详解...
  17. 牛客网《剑指offer》专栏刷题练习|锻炼递归思想|练习栈的使用
  18. 如何将分表汇总到总表_如何快速将几个分表合并到一张表
  19. svm算法 最通俗易懂讲解
  20. 能力素质有所欠缺_表达能力至关重要

热门文章

  1. 2016 移动应用质量大数据报告
  2. 自定义chrome的背景颜色
  3. 主流数据库实时同步/实时ETL工具的比较
  4. 浅析mpeg-ts封装结构
  5. VS exe独立程序打包—Enigma Virtual Box
  6. OpenJudge NOI题库1.1答案
  7. Mysql导致CPU飙高的问题
  8. 财务扫描发票,提示缺少颜色校正文件AV210.ICC
  9. Twisted基本模型
  10. [Web/IP]真实IP获取原理/客户端IP伪造测试