MATLAB自带函数实现经验模态分解

MATLAB从2018a开始给出了内置函数来实现经验模式分解(EMD)与希尔伯特-黄变换(HHT),函数名分别是emd与hht,用户可以直接调用两个函数来实现经验模式分解以及与希尔伯特-黄变换。

Syntax(语法)

  1. [imf,residual] = emd(X)

     returns intrinsic mode functions imf and residual signal residual corresponding to the empirical mode decomposition of X. Use emd to decompose and simplify complicated signals into a finite number of intrinsic mode functions required to perform Hilbert spectral analysis.意思就是返回值是一个经过emd处理后的本征函数imf和残差信号。验证一下,把imf和残差信号相加就是你输入的那个信号。
    
  2. [imf,residual,info] = emd(X)

     returns additional information info on IMFs and residual signal for diagnostic purposes.
    
  3. [] = emd(,Name,Value)

     performs the empirical mode decomposition with additional options specified by one or more Name,Value pair arguments.类似键值对的输入方式,先输入键名,再输入值。
    
  4. emd(___)

     plots the original signal, IMFs, and residual signal as subplots in the same figure.
    

Matlab里面的例子

1.对信号进行经验模态分解和希尔伯特谱可视化
load(‘sinusoidalSignalExampleData.mat’,‘X’,‘fs’)
t = (0:length(X)-1)/fs;
plot(t,X)
xlabel(‘Time(s)’)

sinusoidalSignalExampleData.mat这个数据在matlab文件里,使用命令help emd,然后进入说明文档那里,点开OpenLive Script就有了。

混合信号包含不同振幅和频率值的正弦波。

要创建希尔伯特频谱图,需要信号的固有模态函数(IMFs)。进行经验模态分解,计算信号的imf和残差。由于信号不是平滑的,指定’pchip’作为插值方法。

[imf,residual,info] = emd(X,‘Interpolation’,‘pchip’);

使用上面那条命令的时候,可能会报错:bad option field name: Interpolation,原因是因为你安装了EMD工具箱,这与matlab的emd函数重复导致的。只要把EMD工具箱先移出matlab的路径就可以了。

这条命令出来的结果是多了一个info的1×1struct,里面有6个字段,分别是NumIMF,NumExtrema,NumZerocrossing,NumSifting,MeanEnvelopeEnergy和RelativeTolerance。

使用经验模态分解得到的imf分量创建希尔伯特谱图。 命令:hht(imf,fs)

频率与时间的关系图是一个稀疏的图,其中有一个竖直的彩色条,表示IMF中每个点的瞬时能量。图中是原始混合信号分解后各分量的瞬时频谱。三个imf出现在图中,其频率在1秒内发生明显变化。

2.正弦波本征模态函数的过零和极值

生成两个正弦波s和z,这样s是三个正弦波的和,z是一个调幅的单一正弦波。通过计算两个信号差的无穷范数来验证两个信号是相等的。

t = 0:1e-3:10;
omega1 = 2*pi*100;
omega2 = 2*pi*20;
s = 0.25*cos((omega1-omega2)*t) + 2.5*cos(omega1*t) + 0.25*cos((omega1+omega2)*t);
z = (2+cos(omega2/2*t).^2).*cos(omega1*t);
norm(s-z,Inf)

ans = 3.2729e-13

绘制正弦曲线并选择从2秒开始的1秒间隔。

plot(t,[s' z'])
xlim([2 3])
xlabel('Time (s)')
ylabel('Signal')

获取信号的声谱图。谱图显示了三个不同的正弦分量。傅里叶分析把这些信号看作是正弦波的叠加。

使用emd来计算信号的固有模态函数(IMFs)和附加的诊断信息。默认情况下,该函数输出一个表,其中指示每个IMF的筛选迭代次数、相对容忍度和筛选停止条件。经验模态分解把信号看成z。

零交叉和局部极值的数目最多相差1。这满足了信号为IMF的必要条件。

绘制IMF曲线,并选择从2秒开始的0.5秒间隔。IMF是一个AM信号,因为emd认为信号是调幅的

plot(t,imf)
xlim([2 2.5])
xlabel('Time (s)')
ylabel('IMF')

3.计算振动信号的固有模态函数
略(目前好像用不着)

4.可视化信号的残差和本征模态函数
加载并可视化一个由频率变化明显的正弦波组成的非平稳连续信号。电钻的振动和烟花的声音都是非平稳连续信号的例子。

load('sinusoidalSignalExampleData.mat','X','fs')
t = (0:length(X)-1)/fs;
plot(t,X)
xlabel('Time(s)')

混合信号包含不同振幅和频率值的正弦波。

进行经验模态分解,绘制信号的本征模态函数和残差。由于信号不是平滑的,指定’pchip’作为插值方法。

命令:emd(X,‘Interpolation’,‘pchip’,‘Display’,1)

Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  1      |        2     |     0.026352   |  SiftMaxRelativeTolerance2      |        2     |    0.0039573   |  SiftMaxRelativeTolerance3      |        1     |     0.024838   |  SiftMaxRelativeTolerance4      |        2     |      0.05929   |  SiftMaxRelativeTolerance5      |        2     |      0.11317   |  SiftMaxRelativeTolerance6      |        2     |      0.12599   |  SiftMaxRelativeTolerance7      |        2     |      0.13802   |  SiftMaxRelativeTolerance8      |        3     |      0.15937   |  SiftMaxRelativeTolerance9      |        2     |      0.15923   |  SiftMaxRelativeTolerance

The decomposition stopped because the number of extrema of the residual signal is less than ‘MaxNumExtrema’.

上面这个命令给出了一个迭代次数的表格,还有一个Figure:经验模态分解的各imf分量,但是图中只显示3个imf分量和1个残差,如果要查看所有imf分量,就要用鼠标在途中右键,选择imf选择器。

MATLAB自带函数实现经验模态分解总结相关推荐

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

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

  2. CEEMDAN:完全噪声辅助聚合经验模态分解(matlab)——学习笔记3

    CEEMDAN:完全噪声辅助聚合经验模态分解--学习笔记3 从EMD到CEEMDAN 1.EMD EMD算法将基于原始信号的局部特征时间尺度,将原始信号分解为特征模态函数,即将其分解为从高频到低频的一 ...

  3. 迭代终止准则的三种形式_一种经验模态分解筛选迭代过程终止准则的方法与流程...

    本发明属于数据分析技术领域,涉及筛选迭代余量的相对方差作为经验模态分解方法筛选迭代过程的终止准则. 背景技术: 一维的Fourier分解.小波分析,二维的PCA/EOF等方法,都是从低频开始分解,获取 ...

  4. 量化择时:基于经验模态分解的希尔伯特-黄变换(二)算法

    量化择时:基于经验模态分解的希尔伯特-黄变换 part2部分是算法的介绍,抛开代码部分,其实就是所有人都能看得懂字面解释 Part2算法 在了解了基础的数理知识和学习了将实信号转换为复信号的处理方法之 ...

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

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

  6. 量化择时:基于经验模态分解的希尔伯特-黄变换(一)数理

    量化择时:基于经验模态分解的希尔伯特-黄变换 这部分内容打算分成四个部分,分别是数理.算法.实操和机器学习部分,做完一个part就发一个part. Part1数理 将时间序列的股价日指数转换为信号形式 ...

  7. 转载: EMD(Emprical mode decomposition)经验模态分解

    原文链接:     http://blog.sina.com.cn/s/blog_55954cfb0102e9y2.html 美国工程院士黄锷博士于1998年提出的一种信号分析方法:重点是黄博士的具有 ...

  8. 多元经验模态分解_【Applied Energy最新原创论文】一个基于多元搜索引擎数据的多尺度油价预测方法...

    原文信息: A multi-scale method for forecasting oil price with multi-factor search engine data 原文链接: http ...

  9. 多元经验模态分解_环境激励桥梁模态参数识别—环境激励模态参数识别概述

    环境激励模态参数识别概述 1 结构模态参数识别 结构模态参数识别属于动力学的反问题,是利用外部激励和系统的响应求解系统的参数问题;这一过程亦称为模态分析(Modal Analysis).模态分析又分为 ...

  10. 运用经验模态分解方法(EMD)对实测探地雷达数据进行处理

    运用经验模态分解方法(EMD)对实测探地雷达数据进行处理 经验模态分解(EMD)是一种新型自适应信号时频处理方法,特别适用于非线性非平稳信号的分析处理.探地雷达实测数据存在干扰,因此运用经验模态分解( ...

最新文章

  1. 12.1 LNMP架构介绍;12.2 MySQL安装;12.3-2.4 PHP安装(上下);12.5
  2. React Native之箭头函数和延展操作符(...)
  3. 我在北京大学,剑桥大学读的书
  4. [转]linux(centos)搭建SVN服务器
  5. Java多线程安全问题解决的两种方式代码案例
  6. 获取控制台窗口的句柄(HWND)和程序中输出回车键
  7. 【ES6(2015)】Function函数
  8. IIRFilterNode
  9. 视频教程-纯风老师AI平面设计视频教程-其他
  10. 淘宝、天猫API调用如何按关键词上搜索,item_search_tmall - 按关键字搜索天猫商品
  11. php获取视频直链并且跳转,求 cctalk 提取免费视频直链的方法
  12. JAVA 用户登录图形验证码
  13. 期货的暴富逻辑是什么?
  14. ElasticSerach7.15.2插件中文分词器(IK+pinyin)
  15. 第一阶段:Linux基础
  16. sizeof(int)为什么输出的是4而不是2呢,int类型究竟占几个字节
  17. html制作菱锥旋转,怎样用几何画板实现三棱锥的旋转
  18. 异步爬虫(高效爬虫)
  19. 一支口红用了5年_一支口红用多久最好 口红一般用多久
  20. python多进程编程_【玩树莓】编程篇(八)Python多线程、多进程编程

热门文章

  1. python xlwt_Python中xlwt解析
  2. 视频时代的下一幕 ABC Inspire:读懂视频
  3. 深度学习前沿技术摘要
  4. 外卖cps美团饿了么小程序 每天领取外卖优惠券 下单直接抵扣现金(外卖cps返利分销小程序源码)
  5. 最新Chrome插件开发 api 解析
  6. 注入器/injector
  7. 直播软件开发,直播软件源码+三级分销模式的搭建
  8. java进销存--商品管理
  9. 全文六万字《计算智能》智能优化算法 张军【Python】
  10. Coap协议学习(二)