经验模式分解(EMD)——简介及Matlab工具箱安装

2023-11-13

  最近在做脑电信号分析,在导师的建议下学习了一点经验模式分解(下面简称EMD)的皮毛,期间也是遇到了很多问题,在这里整理出来,一是为了自己备忘,二是为了能尽量帮到有需要的朋友。

一、EMD简介

  经验模态分解(Empirical Mode Decomposition,EMD)法是黄锷(N. E. Huang)在美国国家宇航局与其他人于1998年创造性地提出的一种新型自适应信号时频处理方法,特别适用于非线性非平稳信号的分析处理。对经过EMD处理的信号再进行希尔伯特变换,就组成了大名鼎鼎的“希尔伯特—黄变换”(HHT)。由于脑电信号处理很少在EMD之后接上希尔伯特变换,在这里仅介绍EMD的相关基础知识。
  EMD其实就是一种对信号进行分解的方法,与傅里叶变换、小波变换的核心思想一致,大家都想将信号分解为各个相互独立的成分的叠加;只不过傅里叶变换以及小波变换都要求要有基函数,而EMD却完全抛开了基函数的束缚,仅仅依据数据自身的时间尺度特征来进行信号分解,具备自适应性。由于无需基函数,EMD几乎可以用于任何类型信号的分解,尤其是在非线性、非平稳信号的分解上具有明显的优势。
  EMD的目的是将信号分解为多个本征模函数(IMF)的叠加。IMF必需要满足以下两个条件:
  (1)函数在整个时间范围内,局部极值点和过零点的数目必须相等,或最多相差一个;
  (2)在任意时刻点,局部最大值的包络(上包络线)和局部最小值的包络(下包络线) 平均必须为零。
  为什么IMF一定要满足这两个条件呢?经黄锷等人的研究,满足这两个条件的信号都是单组分的,相当于序列的每一个点只有一个瞬时频率,无其他频率组分叠加。这就为后续的希尔伯特变换铺平了道路,也使得瞬时频率有了意义。
  值得一提的是,EMD在数学上还有一些细节无法证明,但是EMD已经在工程领域取得了辉煌的成就,这也是在科学界工程领先理论的一个例子。

二、EMD方法的实现

  EMD的实现我决定简单说一下,毕竟我们是使用者而已嘛^_^,有需要的朋友可以自行研究一下。
  EMD方法是基于如下假设基础上的:
  (1)信号至少有两个极值点,一个极大值和一个极小值;
  (2)特征时间尺度通过两个极值点之间的时间定义;
  (3)若数据缺乏极值点但有形变点,则可通过数据微分一次或几次获得极值点,然后再通过积分来获得分解结果。
  算法流程如下所示:
          这里写图片描述  

三、Matlab工具箱安装

  在这里我们需要下载两个工具箱,第一个是时频分析工具箱,下载地址为:http://tftb.nongnu.org/;另一个就是EMD工具箱,下载地址为:http://perso.ens-lyon.fr/patrick.flandrin/emd.html。有些同学反映无法下载,现给出百度云地址:https://pan.baidu.com/share/init?surl=-jOdWceZebqnK6kzO2Hhyg,密码 stim。
  第一步安装时频分析工具箱,安装这个工具箱是因为EMD工具箱中的一些功能依赖于这个工具箱。安装步骤如下:
  (1)解压下载的工具箱,将其复制到matlab的toolbox文件夹下
  (2)建立搜索路径,matlab->设置路径->添加并包含子文件夹->找到在toolbox目录下的时频分析工具箱->保存->关闭
  第二步为安装EMD工具箱,这个就简单一些了,下载完毕直接运行“install_emd.m”就可以啦。如果在安装之后,Matlab提示“cemdc2_fix.c等文件安装失败”,如果想让其编译成功则可以参考这篇文章:http://forum.vibunion.com/thread-79866-1-1.html,如果嫌麻烦的话,也可以不用修复,不会影响到使用EMD功能的。

四、程序演示

  在这里贴上一个小程序作为演示,也可以用来测试工具箱有没有安装好。 

fs = 1000;
ts = 1/fs;
t=0:ts:0.3;
z = sin(2*pi*10*t) + sin(2*pi*100*t);
imf=emd(z);
emd_visu(z,t,imf)  % EMD专用画图函数

运行完会出现3张图,如下所示:
EMD处理之后分出的各个IMF,最后一项为余量
从细到粗复现信号
从粗到细复现信号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经验模式分解(EMD)——简介及Matlab工具箱安装 的相关文章

随机推荐

  • 程序计数器的作用--简单易懂

    3 程序计数器 什么是程序计数器 它是干什么用的 java中程序计数器是用寄存器实现的 它的作用是寻找下一个要执行的程序 当我们的java程序被编译成二进制字节码文件后 如下图 右面 是我们写的代码 左面是二进制字节码形式 class 它们
  • FFmpeg 控制台窗口的隐藏和正常退出

    FFmpeg无疑是音视频界的翘首 很多企业或个人都会拿来使用 具体怎么使用 在此不做赘述 这里仅仅讲述如何用C 调用ffmpeg指令 以及调用的控制台窗口的正常关闭 录像或转码等情况下 非正常关闭 直接导致文件损坏 不可用 一 指令的执行
  • PID控制原理详解(一)

    PID的理解 关于理解PID控制算法最典型的一个例子就是一个漏水的水缸的问题 网上有很多讲解PID的帖子会讲到这个例子 这里我也把我自己对于PID的理解用这个例子阐述一遍 有个漏水的水缸 而且漏水的速度还不是恒定的 然后我们还有个水桶 我们
  • BES2300x笔记(14) -- 提示音模块

    哈喽大家好 这是该系列博文的第十四篇 篇 lt lt 系列博文索引 快速通道 gt gt 一 前言 提示音 的这个模块 代码量确实不小啊 这一篇 我们就来梳理一下 提示音相关接口的调用逻辑吧 二 代码调用逻辑 app voice repor
  • To see the full stack trace of the errors, re-run Maven with the -e switch.

    问题描述 微服务项目中其它模块不能依赖common模块中的依赖 而common中是有依赖的 然后重新对common进行install发现报错 原因分析 经过查找是由于common中的pom xml中有一个依赖被引入了两次 删掉其中一个即可
  • 461. 汉明距离

    题目描述 两个整数间的汉明距离是指 这两个数字对应二进制位不同的位置的数目 给定两个整数 x 和 y 计算它们间的汉明距离 注意 0 x y lt 2 31 样例 示例 输入 x 1 y 4 输出 2 解释 1 0 0 0 1 4 0 1
  • 从0到1,一文掌握用户画像标签体系

    一 标签体系概览 1 什么是对象 2 什么是标签 标签是人为设定的 根据业务场景需求 对目标对象运用一定的算法得到的高度精炼的特征标识 标签是对对象某个维度特征的描述与刻画 是某一种用户特征的符号表示 每一种标签都规定了我们观察认识描述对象
  • Redis第二十二讲 Redis高可用集群节点通信机制

    两个端口 在哨兵系统中 节点分为数据节点和哨兵节点 前者存储数据 后者实现额外的控制功能 在集群中 没有数据节点与非数据节点之分 所有的节点都存储数据 也都参与集群状态的维护 为此 集群中的每个节点 都提供了两个 TCP端口 普通端口 即我
  • 电脑上面的word文档被删除了怎么办?分享四种亲测恢复方法

    不小心把电脑里面的word文档删除了 当你需要用到这些被误删的文档后 怎么找回呢 根本不知道从何入手的小伙伴不用担心 因为办法总比困难多多 下面就让小编为大家分享word文档恢复的方法 方法均以win10系统为例进行操作 大家跟着操作将其恢
  • android.content.res.Resources$NotFoundException: String resource ID #0x1

    在Android开发中如果出现android content res Resources NotFoundException String resource ID 0x1这样的错误 你想也不用想 一定是Textview控件显示数据出了问题
  • 某公众号登录加密(webpack)

    前言 随手记 1 本文章仅作学习参考使用 不做其他使用 网站 aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tLw 输入密码 分析抓包信息 如下 可以初步判断是一个md5的密文数据 使用全局搜索Search定位到加密位置下断
  • 使用国内镜像源在线安装QT Mac M1

    参考 使用国内镜像源在线安装QT 2023 3 25更新 qt国内镜像 Iotfsd的博客 CSDN博客 网上搜了一些资料 大多数建议用fiddler代理 Mac M1操作不起来 看到上述windows的方法 尝试了一下 运气很好成功了 大
  • 闭环系统的零极点图判定稳定性_系统的稳定性判别

    pzmap 函数可以绘制连续系统在复平面内的零极点图 其调用格式如下 p z pamap num den 或 p z pzmap A B C D 或 p z pzmap p z 其中列向量 p 为系统的极点 列向量 z 为系统的零点 num
  • SQLilabs的第20关(HTTP请求头-Cookie)——报错注入

    1 判断闭合方式 我们在cookie的后面加上一个 返回页面如下 我们再将 改成 返回页面如下 这说明闭合方式是 2 确定注入方式 我们在判断闭合方式时发现 该网站会返回报错信息 又没有回显 因此适合使用报错注入 3 爆破数据库名 用户名
  • opencv中morphologyEx()函数

    opencv中morphologyEx函数 函数原型 参数解释 例子 相关函数 参考博客 函数原型 CV EXPORTS W void morphologyEx InputArray src OutputArray dst int op I
  • pnpm 构建 Monorepo workspace项目

    pnpm 构建 Monorepo 项目 使用背景 因为公司要做的项目比较多 项目之间又会相互依赖 目前分为pc后台 pc商城 uniapp项目等等 所以为了代码的复用和代码的规范提交 决定引入pnpm来创建Monorepo项目 Monore
  • 每次win10开机需要重启一次系统才能进去,第一次停留在启动画面就不动了。

    这是由于部分电脑的主板不支持快速启动造成的 所以把快速启动功能关闭掉即可 具体操作步骤如下 控制面板 硬件和声音 电源选项 选择电源按钮的功能 选择 更改当前不可用的设置 然后把 启用快速启动 推荐 前面的勾去掉 再点击下面的 保存设置 即
  • Python 自动化测试(三): pytest 参数化测试用例构建

    在之前的文章中主要分享了 pytest 的实用特性 接下来讲 Pytest 参数化用例的构建 如果待测试的输入与输出是一组数据 可以把测试数据组织起来用不同的测试数据调用相同的测试方法 参数化顾名思义就是把不同的参数 写到一个集合里 然后程
  • Jetson Nano复制系统和U盘启动【第三部分】

    一 写在前面 第三部分承接第二部分 由于Nano EMMC容量只有16GB大小 安装系统和SDK后 Nano EMMC只剩下1 4GB容量 几乎没有空间安装其它软件 第三部分的主要内容是将Nano EMMC系统完全复制到U盘中 并修改Nan
  • 经验模式分解(EMD)——简介及Matlab工具箱安装

    最近在做脑电信号分析 在导师的建议下学习了一点经验模式分解 下面简称EMD 的皮毛 期间也是遇到了很多问题 在这里整理出来 一是为了自己备忘 二是为了能尽量帮到有需要的朋友 一 EMD简介 经验模态分解 Empirical Mode Dec