许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  经验模态分解EMD在MATLAB中的实现方法详解

经验模态分解EMD在MATLAB中的实现方法详解

阅读数 3
点赞 0
article_banner

很多同学留言要EMD的代码,这篇文章就写一下吧。

一、使用MATLAB自带函数

如果你的MATLAB版本是2018a及更新版本,那么是可以直接调用emd函数的。

以下代码在MATLAB2019a中编写,未在其他版本中测试。

load('sinusoidalSignalExampleData.mat','X','fs')  %载入数据t = (0:length(X)-1)/fs;plot(t,X)                       %绘制原始信号图xlabel('Time(s)') emd(X,'Interpolation','pchip')  %emd分解

得到原始信号图如下图,它是由不同的振幅和频率的正弦信号叠加得到的。

原始信号

得到的EMD分解图为:

EMD分解结果

从title中可以看到,一种有9个 IMF 分量,而图中只显示了其中的IMF1~IMF3,如果要显示其他分量,在图片的空白处点击右键:

然后选择“IMF Selector”,打开如下界面:

从IMF Selector中可以选择在图片中显示的IMF分量、原始信号和残差值。

使用新版MATLAB的简单emd的 使用方法 就是这样,如果想要进一步使用emd的分解结果,可以查看MATLAB的官方文档:Empirical mode decomposition - MATLAB emd - MathWorks 中国

具体的内容这里不展开讲了,提示两个地方:

  1. emd函数的返回值主要包括imf,residual,info这三个,imf即各模态分量值;residual为残差值;info中包括了该次分解的一些信息,比如imf数量、各分量的过零点数、各分量的极值数等,这些信息可能在有些应用中有着重要的作用。
  2. 通过“名称-属性”设置emd分解属性。比如上个例子中的'Interpolation','pchip',代表使用pchip的插值方法。除了设置插值方法,还可以设置筛选迭代的最大次数、IMF数量的最大值、残差值中极值的最大数量等等参数。这部分属于更高阶的设置,同学们可以根据需要进行选择。

二、使用EMD工具箱

有一个常用的 EMD工具箱 ,由G-Rilling提供,在MATLAB2017及以下的版本中可以使用。当然在新版本的MATLAB中同样可以安装使用。

该工具箱与MATLAB自带的emd函数相比,可以说各有千秋。在我们最常用的emd分解上来说,该工具箱不像自带函数那样有丰富的设置。其典型调用形式如下:

imf = emd(varargin)

相比新版MATLAB自带函数来讲,似乎有些简陋,只能返回各分量的分解结果,无法自动画图。不过没关系,没有枪没有炮我们自己造。

fs = 100;  %采样频率t = 0:1/fs:10;x = sin(20*pi*t);y = 2*sin(1*pi*t);sig = x+y;PlotEMDandFFT(sig,fs)

其中PlotEMDandFFT是由笔者编写的函数,输入原始信号和采样频率,可以得到下图:

EMD分解结果及各分量对应的频谱

使用这个函数可以得到各IMF分量图和对应的频谱图。由于加入了频谱,从某中程度上来看这个图比MATLAB自带函数画图还要更好用一些。

要如何安装这个工具箱呢,正常的方法是把工具箱添加到MATLAB的路径中,不过有很多同学跟我说没用过MATLAB,不知道怎样添加路径。于是博主把常用的三个跟EMD相关的工具箱(EMD/package_emd/TFTB)打包在一起,写了个便捷安装函数,可以实现一键安装。

便捷安装EMD工具箱

三、如何获得工具箱和代码

如果你的MATLAB版本不是2018或者2019,那么可以使用第二种方法实现emd的功能。

如果想要获取工具箱和PlotEMDandFF函数等代码,关注我的公众号“看海的城堡”,微信号为“khscience”,回复“EMD”就能拿到啦,公众号里可能还会有更多有趣的东西分享。


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


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空