本系列上一篇(数学形态学)指路:https://blog.csdn.net/m0_37422217/article/details/90744326

注:这里是以小型手持心电图机为研究对象的(单导联)

上一篇中我们说到数学形态法可以很好的去除基线漂移和其他类型的噪音。这里我们介绍由,N. E. Huang 等人提出了经验模态分解(Empirical Mode Decomposition, EMD)方法。

EMD原理

这是一种可以将任何复杂信号分解为有限个固有模态函数(Instrinic Mode Function, IMF)的自适应、高效率的分解方法。经验模态分解适用于处理非线性和非平稳信号,例如心电信号,它有助于我们从很多方面理解信号的物理意义。

EMD对信号分解的原理是:把信号x(t)分解成一组内蕴模态函数(IMF)和一个最后的剩余值的和:

得到IMFs 的迭代过程需要满足两个条件:

(1)整个数据段内的零点数和极点数相等或至多相差1;

(2)信号由局部极大值确定的包络线和由局部极小值确定的包络线均值为零,即信号关于时间轴对称[57]。心电信号由EMD算法分解为一个高频部分(第一个IMF)和低频部分(剩余值),低频部分又将分解为高频部分(第二个IMF)和低频部分(剩余值),重复执行此过程,直到剩余量变成单一稳定的信号。

对心电信号x(t)进行EMD分解的具体步骤为:

(1)找到信号x(t)的局部极大值和极小值点,用三次样条插值计算出上、下包络线xu(t)和xl(t);

(2)计算上下包络线的平均值m1(t)=(xu(t)+xl(t))/2,并计算x(t)和m1(t)的差值:d1(t)=x(t)-m1(t);

(3)将d1(t)作为一个新的信号,重复第1步和第2步直到得到的心电信号满足上面的第一个IMF:c1(t),剩余值r1(t)=x(t)-c1(t);

(4)将r1(t)作为一个新的信号,重复前3步,得到多有的IMFs。当第n次的迭代rn(t)成为稳定的信号时,迭代过程就停止。信号x(t)的EMD分解完成。

实例

我们可以自己设定EMD的分解层数,这里我分解为5层:

代码:

OPTIONS.MAXMODES = 5; %设置IMF层数5层,得到的imf中有6行,最后一行为res.
[imf] = emd(x, OPTIONS); %EMD
subplot(3,2,1);plot(imf(1,:));title('IMF1');
subplot(3,2,2);plot(imf(2,:));title('IMF2');
subplot(3,2,3);plot(imf(3,:));title('IMF3');
subplot(3,2,4);plot(imf(4,:));title('IMF4');
subplot(3,2,5);plot(imf(5,:));title('IMF5');
subplot(3,2,6);plot(imf(6,:));title('res');

原始心电信号:

EMD分解:

可以看出随着层数的增加,频率在下降。

去噪方案

关于具体去噪方案,很多文献中都是利用组合算法,将心电信号进行EMD分解后,针对每一层的不同情况,结合小波阈值法和数学形态学等算法对其进行处理的。

比如:有文献指出,对高频噪声主导的IMF(如IMF1、IMF2等)进行类小波阈值处理,对有用信号主导的 IMF进行数学形态学滤波处理,最后对各处理后的IMF和残余分量重构,得到去除噪声的心电信号。

Matlab工具箱下载

这篇文章里有:https://blog.csdn.net/qrlhl/article/details/52213135

主要参考文献:

[1]基于EMD的心电信号去噪方法研究及实现验证

[2]EMD分解与IIR滤波器在心电信号预处理的应用研究

[3]基于改进EMD与形态滤波的齿轮故障特征提取

下一篇(小波及其他技术方面问题)指路:https://blog.csdn.net/m0_37422217/article/details/90951201

心电信号去噪(part4)--经验模态分解法(EMD)相关推荐

  1. 经验模态分解法简析(转)

    转载自:http://blog.sina.com.cn/s/blog_55954cfb0102e9y2.html 美国工程院士黄锷博士于1998年提出的一种信号分析方法:重点是黄博士的具有创新性的经验 ...

  2. 经验模态分解法简析 (转)

    http://blog.sina.com.cn/s/blog_55954cfb0102e9y2.html 美国工程院士黄锷博士于1998年提出的一种信号分析方法:重点是黄博士的具有创新性的经验模态分解 ...

  3. 心电信号去噪(part3)--数学形态学

    本系列上一篇(中值滤波器)指路:https://blog.csdn.net/m0_37422217/article/details/90739660 注:这里是以小型手持心电图机为研究对象的(单导联) ...

  4. 心电信号去噪(part5)--小波及其他技术方面问题

    本系列上一篇(EMD)指路:https://blog.csdn.net/m0_37422217/article/details/90922047 小波变换我觉得这篇博客写的很好,至少我觉得,所以... ...

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

    暂时打断一下滤波专题,插播一条EMD在python中实现方法的文章. 本篇是Mr.看海:这篇文章能让你明白经验模态分解(EMD)--EMD在MATLAB中的实现方法的姊妹篇,也就是要在python中实 ...

  6. 心电信号去噪(part2)--中值滤波器

    本系列上一篇(心电信号简介)指路:https://blog.csdn.net/m0_37422217/article/details/90738308 注:这里是以小型手持心电图机为研究对象的(单导联 ...

  7. lmd matlab 信号处理程序,LMD经验模态分解matlab程序.doc

    LMD经验模态分解matlab程序 LMD经验模态分解matlab程序--原味的 曾经也用滑动平均写过LMD,其实滑动平均的EMD才是原汁原味的居于均值分解. 分享给有需要的人,程序写的不好,只是希望 ...

  8. 【信号去噪】基于小波阈值实现心电信号去噪附matlab代码

    1 简介 由于外界环境的干扰,导致在实际信号的采集过程中无法避免地引入一些随机噪声,从而影响下一步的信号处理,所以如何对含噪信号进行去噪处理,提取出对研究有用的信号,成为信号领域的一个重要研究课题.小 ...

  9. 【信号去噪】基于NLM时间序列心电信号去噪附matlab代码

    1 简介 作为一种信号预处理手段,信号去噪在众多信号处理应用中发挥着重要的作用.到目前为止,信号去噪问题被大量研究,并取得了许多重要成果,涌现出了包括非局部均值(NLM)去噪算法在内的一批优秀的去噪方 ...

最新文章

  1. 驱动07.USB驱动程序
  2. 深入学习python内存管理
  3. OpenCASCADE绘制测试线束:布尔运算命令之设置选项的操作
  4. Spring MVC 3模板和Apache Tiles
  5. c++初始化成员列表_C++ 类构造函数初始化列表
  6. Go 语言真是现在进大厂的捷径?
  7. C++:计算选手最终得分
  8. (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作...
  9. delete index mysql_为什么MySQL不建议delete删除数据「心得分享」
  10. Puppet常用配置与管理
  11. jboss:在standalone.xml中设置系统属性(system-properties)
  12. JavaScript 系列笔记(一)数据类型
  13. [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式
  14. ArcGIS/ArcMAP操作录屏视频及相关实验数据(行政界线、地名点、道路路网、水系、乡镇/街道面等)
  15. 友盟分享微信图标显示成圆形
  16. 钢结构工程管理软件系统
  17. 【利用编程来解决问题】——解数学题
  18. 阿里巴巴最新分销模式淘易客分销
  19. 【HDU5442】 Favorite Donut(后缀数组)
  20. 苹果手机支持鸿蒙,除了苹果,这四款华为也能三年不卡,还能升级鸿蒙

热门文章

  1. SpringBoot+webservice
  2. 河北经济发展进入新阶段:服务业成主导产业
  3. 《Debug Hacks》和调试技巧【转】
  4. HTML5实战——canvas 绘制钟表
  5. Cortex-M3基础
  6. 关于使用WindowsUpdate 或 Windows 自动升级时碰到的 svchost.exe 进程 CPU 资源占用过高的问题的相关信息...
  7. 方立勋_30天掌握JavaWeb_XML
  8. RedHat7安装Tomcat
  9. WPF入门教程系列四——Dispatcher介绍
  10. 关于嵌入式学习随笔-6《NVIC中断优先级管理》