经验模态分解(EMD)

2023-11-09

目录

1 背景

2 时间序列平稳性

3 EMD 方法

4 EMD 过程

5 EMD 方法的缺陷

6 Python 


1 背景

        实际工程测量中由于测量系统受外界环境影响经常在测量信号中产生趋势项。趋势项是指信号中周期大于采样长度的频率成分,通常表现为线性的或者慢变的趋势误差。提取和消除信号中存在的趋势项是信号预处理的一个重要环节,趋势项会严重影响信号时域相关分析和频域功率谱估计精度,严重的趋势项干扰会使低频谱严重失真。

        目前提取趋势项的方法主要有:平均斜率法差分法低通滤波法最小二乘拟合法等。这些方法通常需要预先明确信号中趋势项的类型,如线性趋势项、多项式或指数趋势项等,不适用于复杂变化的趋势项提取,很大程度上限制了其应用范围。

         近年来已有利用 EMD 进行趋势项提取的研究成果报道。利用 EMD 进行趋势项提取可不考虑趋势项的类型,具有自适应性因此适用范围更广泛。但是利用EMD 进行趋势项提取有一个不可忽视的前提条件:就是测试信号必须能够完全分解,即满足可分解条件,否则会导致模态混叠。此时趋势项很可能会同时存在于分解余量低频 IMF 分量中,这种情况下利用 EMD 进行趋势项提取则会遇到困难。而影响 EMD 分解性能的另外一个因素:端点效应同样会波及到分解余量中,导致趋势项提取不够精确。

        EMD最显著的特点,就是其克服了基函数无自适应性的问题。啥意思呢?回忆小波分析部分的内容,我们会知道小波分析是需要选定某一个小波基的,小波基的选择对整个小波分析的结果影响很大,一旦确定了小波基,在整个分析过程中将无法更换,即使该小波基在全局可能是最佳的,但在某些局部可能并不是,所以小波分析的基函数缺乏适应性。

        通俗的说,用EMD有什么好处呢?对于一段未知信号,不需要做预先分析与研究,就可以直接开始分解。这个方法会自动按照一些固模式按层次分好,而不需要人为设置和干预。

        再通俗一点,EMD就像一台机器,把一堆混在一起的硬币扔进去,他会自动按照1元、5毛、1毛、5分、1分地分成几份。

时间序列平稳性

         所谓时间序列的平稳性,一般指宽平稳,即时间序列的均值和方差为与时间无关的常数,其协方差与时间间隔有关而也与时间无关。简单地说,就是一个平稳的时间序列指的是:遥想未来所能获得的样本时间序列,我们能断定其均值、方差、协方差必定与眼下已获得的样本时间序列等同。 
        反之,如果样本时间序列的本质特征只存在于所发生的当期,并不会延续到未来,亦即样本时间序列的均值、方差、协方差非常数,则这样一个时间序列不足以昭示未来,我们便称这样的样本时间序列是非平稳的。 
        形象地理解,平稳性就是要求经由样本时间序列所得到的拟合曲线在未来的一段时间内仍能顺着现有的形态“惯性”地延续下去;如果数据非平稳,则说明样本拟合曲线的形态不具有“惯性”延续的特点,也就是基于未来将要获得的样本时间序列所拟合出来的曲线将迥异于当前的样本拟合曲线。 
        事实上,世界上几乎不存在理想的“平稳”时间序列。欧阳首承教授曾指出:“平稳序列性消除了小概率事件”。即在欧阳教授的溃变论看来,EMD这一方法也是有问题的。但是,该方法确实扩展了平稳化这一传统思想的应用范围,即扩展到了对任何类型的时间序列的处理,也是了不起的新进展。

3 EMD 方法

         EMD 方法是美国 NASA 的黄锷博士提出的一种针对非平稳信号的分析方法。EMD 过程实质上是对非平稳信号进行平稳化处理的一种手段。其结果是将信号中不同尺度的波动和趋势进行逐级分解,产生一系列具有不同特征尺度的数据序列,每一个序列称为一个固有模态函数 IMF

         每一个 IMF必须满足2个条件:

  1. 在整个时程内极值点个数与过零点个数相等或最多相差1;
  2. 在任意时刻,由局部极大值点形成的上包络线和由局部极小值点形成的下包络线的平均值为零,即上、下包络线相对于时间轴局部对称。

啥意思?

1)图线要反复跨越x轴,像这样:

       而不能像这样某次穿过零点后出现多个极点:

 2)包络线要对称,像这样:

而不能像这样:

EMD分解示例:

         上图由7张图片组成,

  • 其中第1张为原始信号,
  • 后边依次为EMD分解之后得到的6个分量,分别叫做IMF1~IMF5,
  • 最后一张图为残差,

        每一个IMF分量代表了原始信号中存在的一种内涵模态分量。可以看出,每个IMF分量都是满足这两个约束条件的。 

EMD方法中假设:

  (1)任何信号都可以分解为若干个IMF分量;

  (2)各个IMF分量可以是线性的或非线性的,局部的零点数和极值点数相同,且上下包络关于时间轴局部对称;

  (3)一个信号可包含若干个IMF分量。

4 EMD 过程

        任何复杂的信号均可视为多个不同的固有模态函数叠加之和,任何模态函数可以是线性的或非线性的,并且任意两个模态之间都是相互独立的。在这个假设基础上,复杂信号x(t)的EMD分解步骤如下:

步骤1:

        寻找信号 全部极值点,通过三次样条曲线将局部极大值点连成上包络线,将局部极小值点连成下包络线。上、下包络线包含所有的数据点。

        

步骤2:

       由上包络和下包络线的平均值,得出

         

          

 步骤3:

         原始信号减均值包络线,得到中间信号。 

          

         这个过程称为“筛分”原始信号 x(t)经过一次“筛分”得到一个新的信号

         

 步骤4:

         判断该中间信号是否满足IMF的两个条件,如果满足,该信号就是一个IMF分量;如果不是,以该信号为基础,重新做1)~4)的分析。即继续进行“筛分”直至分解 k 次后分解得到的信号满足 IMF 条件得到原始信号的第一个 IMF 分量

           

          代表原始信号 x(t)中最高频的 IMF 分量,从原始信号 x(t)中减去得到剩余分量 r1(t)

        IMF分量的获取通常需要若干次的迭代。 

      

 步骤5:

        对 r1(t)进行上述“筛分”处理,可得到第二个 IMF 分量 I2(t),再将 r1(t)减去 I2(t)后获得剩余分量 r2(t)。如此分解下去,直到最后一个残余信号 rn(t)无法继续分解为止,完成对信号 x(t)的 EMD 过程:

         

 步骤6:

         当 变成单调函数后,剩余的 成为残余分量。所有IMF分量和残余分量之和为原始信号 x(t):

          

         在 EMD 的“筛分”过程中可以看出与傅里叶变换和小波分解相比较EMD 不需要设定基函数因此适用范围更广泛。

        将原始信号 x(t)分解后第一个 IMF 分量包含原始信号 x(t)中时间尺度最小(频率最高)的成分随着 IMF 阶数的增加其对应的频率成分逐渐降低。其中余量的频率成分
最低。根据 EMD 分解收敛条件,分解余量 为单调函数,周期大于信号的记录长度,因此可以将作为趋势项。

5 EMD 方法的缺陷

        EMD 方法适用信号范围广泛,不受信号和趋势项类型约束。但是利用 EMD方法有两个缺陷:

(1)提取趋势项必须要求原始信号本身满足可分解条件,即,其中,代表多分量信号中分量1的幅度和频率,代表多分量信号中分量2的幅度和频率。如果可分解条件得不到满足,则会在 EMD 过程中产生模态混叠,导致不同频率成分共存于同一个 IMF 分量中。那么作为低频的趋势项成分,也可能会混叠在与之接近的低频IMF 分量中,此时用分解余量作为趋势项会使趋势项提取不完全。

(2)EMD 另外一个缺陷是端点效应问题。在 EMD 分解中关键的一个步骤是采用三次样条法求上下包络的平均值,三次样条曲线具有光滑的一次微分和连续的二次微分特点。由于所分析信号长度有限,信号的两端点不能确定是极值。因此在进行三次样条插值时,必然使信号的上下包络
在信号两端附近严重扭曲。在信号的高频分量中,由于时间尺度小,极值间的距离小,端部的边缘效应仅局限在信号两端很小的部分。但对于低频分量,时间尺度大,极值间的距离大,端部的边缘效应就传播到信号内部,特别是原始信号数据集比较短时,会严重影响 EMD 分解的质量 。作为分解余量 ,同样受到端点效应的影响,这种情况下简单地把 作为趋势项处理,同样会影响趋势项提取精度。

端点效应:

6 Python 

pip install EMD-signal == 0.2.10

import numpy as np
from PyEMD import EMD, Visualisation
import matplotlib.pyplot as plt

# data = np.random.randint(6, 10, 300)
# 构建信号
# t = np.arange(0,1, 0.01)
t = np.linspace(0, 100, 100)
data = 2*np.sin(2*np.pi*15*t) +4*np.sin(2*np.pi*10*t)*np.sin(2*np.pi*t*0.1)+np.sin(2*np.pi*5*t) + 0.05 * t + 1

# t = np.linspace(0, 100, 100)
# data = 0.05 * t + 1

plt.plot(data)
plt.show()

emd = EMD()
emd.emd(data)
imfs, res = emd.get_imfs_and_residue()
imf = imfs.sum(axis=0) - imfs[-1]
print(imf)
plt.plot(imf)
plt.show()
# 趋势画图
plt.plot(imfs[-1])
plt.show()

# 绘制 IMF
vis = Visualisation()
vis.plot_imfs(imfs=imfs, residue=res, t=t, include_residue=True)
# 绘制并显示所有提供的IMF的瞬时频率
vis.plot_instant_freq(t, imfs=imfs)
vis.show()

改​​​​​​善EMD端点效应的方法 - 知乎

什么是EMD(经验模态分解)的端点效应? - 知乎

EMD算法原理与python实现_脑机接口社区的博客-CSDN博客_emd python

二、信号分解 —>经验模态分解(EMD)学习笔记_追逐者-桥的博客-CSDN博客_emd解决模态混叠用频率移动

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

有道云笔记

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

经验模态分解(EMD) 的相关文章

  • 预测数值型数据:回归源码分析(1)

    回归模型比较简单 这里先简单介绍下 后面遇到难点再具体分析 回归的一般方法 1 收集数据 采用任意方法收集数据 2 准备数据 回归需要数值型数据 标称型数据将被转成二值型数据 3 分析数据 绘出数据的可视化二维图将有助于对数据做出理解和分析
  • R语言中的fitted() 和 predict()

    R语言中的fitted 和predict 总结来说 fitted 拟合 是在给定样本上做预测 而predict 预测 是在新的样本上做预测 以前一篇中的数据为例 图片是根据高度 height 来预测体重 weight 其中真实的数据是第一项
  • ANN神经网络代码在Matlab中的简单实现

    m是自变量因素行数 n是因变量因素行数 o是所要预测用的自变量因素行数 一般m o warning off format long g filename filepath uigetfile xlsx 选择神经网络需要参考训练的样本数据 x
  • 论文笔记(1)DenseBox: Unifying Landmark Localization with End to End Object Detection

    本文的贡献有一下几点 1 实现了end to end的学习 同时完成了对bounding box和物体类别的预测 2 在多任务学习中融入定位信息 提高了检测的准确率 我们先来看看他和其他几篇代表性文章之间的不同 在OverFeat 1 中提
  • 理解准确率(accuracy)、精度(precision)、查全率(recall)、F1

    Precision又叫查准率 Recall又叫查全率 这两个指标共同衡量才能评价模型输出结果 TP TN FP FN的定义 在二分类问题中 Real 1 Real 0 Predict 1 TP FP Predict 0 FN TN TP 预
  • CTR预估的几种方式

    1 CTR预估 CTR预估是计算广告中最核心的算法之一 那么CTR预估是指什么呢 简单来说 CTR预估是对每次广告的点击情况做出预测 预测用户是点击还是不点击 具体定义可以参考 CTR CTR预估和很多因素相关 比如历史点击率 广告位置 时
  • 粒子滤波(Particle filter)算法简介及MATLAB实现

    粒子滤波是以贝叶斯推理 点击打开链接 和重要性采样为基本框架的 因此 想要掌握粒子滤波 对于上述两个基本内容必须有一个初步的了解 重要性采样呢 其实就是根据对粒子的信任程度添加不同的权重 添加权重的规则就是 对于我们信任度高的粒子 给它们添
  • 鸢尾花分类预测数据分析

    鸢尾花分类预测数据分析 目标 根据未知种类鸢尾花的特征预测其种类 数据 鸢尾花数据集 分析 描述性分析 探索性分析 建模分析 模型分析 迭代分析 成果 位置种类鸢尾花的预测结果 import numpy as np import matpl
  • R中prophet包说明文档(一)

    名称 自动预测过程 版本 0 2 1 日期 2017 11 08 描述 实现了一个时间序列的预测过程 基于能够拟合年度 周等周期以及假期等因素的非线性趋势的加法模型 模型要求至少一年以上的周期性历史数据 prophet模型对于缺失值 趋势突
  • SVM支持向量机的多输入单输出预测模型

    多输入单输出 使用SVM做预测的时候 涉及到数据处理 这里强调一下 其它预测算法也适用 我们经常将收集数据集进行归一化 标准化 其实 只需要对部分数据进行归一化即可 归一化的目的是将输入向量中的各属性之间的数量级拉近 如果量级相差过大会影响
  • 拓端tecdat

    最近我们被要求撰写关于ARIMA ARCH的研究报告 包括一些图形和统计输出 时间序列分析模型 ARIMA ARCH GARCH模型分析股票价格数据 相关视频 在Python和R语言中建立EWMA ARIMA模型预测时间序列 简介 时间序列
  • R语言 决策树--预测模型

    决策树 算法的目标是建立分类预测模型或回归预测模型 是一种预测模型 按目标不同可以细分为分类树和回归树 因为在展示的时候 类似于一棵倒置的树而得名 如下图 基本概念 根节点 如上图中最上方 一棵决策树只有一个根节点 中间节点 位于中间的节点
  • [python] 时间序列分析之ARIMA

    1 时间序列与时间序列分析 在生产和科学研究中 对某一个或者一组变量 x t x t 进行观察测量 将在一系列时刻 t1 t2 tn t 1 t 2 cdots t n 所得到的离散数字组成的序列集合 称之为时间序列 时间序列分析是根据系统
  • R语言 时间序列ARIMA模型方法

    原理什么的百度一搜一堆 看不明白 先学会用这个工具吧 ARIMA 全称为自回归积分滑动平均模型 Autoregressive Integrated Moving Average Model 简记ARIMA 是由博克思 Box 和詹金斯 Je
  • 备战数学建模34-BP神经网络预测2

    目录 一 辛烷值的预测 1 题目分析与原理介绍 2 神经网络建立过程 3 预测结果分析 BP神经网络模型 包含输入层 隐含层和输出层 正向传播过程是通过输入样本到输入层 通过输入层经过各层隐藏层 最后到达输出层 若输出层输出值与期望值的输出
  • 经验模态分解(EMD)

    目录 1 背景 2 时间序列平稳性 3 EMD 方法 4 EMD 过程 5 EMD 方法的缺陷 6 Python 1 背景 实际工程测量中由于测量系统受外界环境影响经常在测量信号中产生趋势项 趋势项是指信号中周期大于采样长度的频率成分 通常
  • 时间序列完全教程(R)

    简介 在商业应用中 时间是最重要的因素 能够提升成功率 然而绝大多数公司很难跟上时间的脚步 但是随着技术的发展 出现了很多有效的方法 能够让我们预测未来 不要担心 本文并不会讨论时间机器 讨论的都是很实用的东西 本文将要讨论关于预测的方法
  • 多层多输入的CNN-LSTM时间序列回归预测(卷积神经网络-长短期记忆网络)——附代码

    目录 摘要 卷积神经网络 CNN 的介绍 长短期记忆网络 LSTM 的介绍 CNN LSTM Matlab代码运行结果 本文Matlab代码 数据分享 摘要 本文使用CNN LSTM混合神经网络对时间序列数据进行回归预测 本模型的输入数据个
  • 『sklearn学习』多种模型预测脸的下半部分的结果对比

    预测脸的下半部分 import numpy as np import matplotlib pyplot as plt from sklearn datasets import fetch olivetti faces from sklea
  • 异常检测主要方法总结

    最近对预测及异常检测进行了一些研究和学习 把所学东西做一个汇总整理 欢迎交流拍砖 侵权删 目录 一 时间序列概念 二 时间序列异常检测 三 时序类型 四 异常类型 4 1 点异常 4 2 上下文异常 4 3 集合异常 五 重要概念 5 1

随机推荐

  • sql_model处理方案

    1 查询sql model的值 select sql mode 2 先贴一个大多数数据库的配置 STRICT TRANS TABLES NO ZERO IN DATE NO ZERO DATE ERROR FOR DIVISION BY Z
  • 算法题:(二分搜索)

    class Solution public int binarySearch vector
  • vue.js -- 动态组件&异步组件

    目录 动态组件 点击切换组件 优化点击切换组件 使用component标签优化代码 使用keep alive标签完善功能 异步组件 总结 动态组件 根据数据的变化 动态切换组件的显示 点击切换组件 首先定义两个子组件 子组件 app com
  • 读《游戏之旅--我的编程感悟》有感

    我不是学计算机的 但此书给我的感触颇深 此书成于2005年 我真希望自己能早6年读到这本书呀 2007年大学的时候就读到 作者叫云风 个人主页 www codingnow com 是个技术高手 网易游戏开发部门的重要人物 他书中有这样一段话
  • 【RabbitMQ教程】Work queues 工作队列模式

    目录 前言 Work queues工作模式介绍 消息模型 适用场景 消费策略 重要 消费策略选择 消费策略代码示例 轮询分发 1 定义生产者和消费者 2 运行程序 3 结果分析 公平分发 1 定义生产者和消费者 2 运行程序 3 结果分析
  • 憨批的语义分割3——unet模型详解以及训练自己的unet模型(划分斑马线)

    憨批的语义分割3 unet模型详解以及训练自己的unet模型 划分斑马线 学习前言 模型部分 什么是unet模型 unet模型的代码实现 1 主干模型Mobilenet 2 unet的Decoder解码部分 代码测试 训练部分 训练的是什么
  • 蓝桥杯-第六届蓝桥杯C语言A组/B组/C组-Python题解

    目录 方程整数解 星系炸弹 奇妙的数字 牌型种数 手链样式 饮料换购 奖券数目 三羊献瑞 加法变乘法 隔行变色 立方尾不变 方程整数解 方程 a 2 b 2 c 2 1000 这个方程有整数解吗 有 a b c 6 8 30 就是一组解 你
  • 猫眼美团滑块

    猫眼演场会下单会弹出美团的滑块验证码 使用js过滑块 想看演唱会但是又抢不到票 用python写一个猫眼自动下单
  • 2020年最常见的25个Web开发面试问题

    Java面试笔试面经 Java技术每天学习一点 Java面试 关注不迷路 作者 Team Codegiant 译者 王强 策划 李俊辰 本文最初发布于 Medium 网站 经原作者授权由 InfoQ 中文站翻译并分享 你把闹钟设定在了下午
  • 软件测试值不值得学,2023软件测试行情分析

    目录 1 人们的生活离不开软件 有软件的地方就有测试 2 测试工程师特别是自动化测试工程师的需求会越来越大 3 软件测试经验越丰富越受欢迎 不存在35岁限制 4 所有新兴行业比如chat gtp 车载系统等都需要测试工程师 薪资 就业 软件
  • Office2010安装步骤

    这是一篇我自己写于17年8月27日的office2010的安装教程 发现挺多人都不会安装或者激活 所以特地写了这篇文 安装office2010前请确保电脑中没有安装其它版本的office软件 否则可能造成两个版本的office不能正常使用
  • MATLAB:矩阵(基础知识)

    一 数组的创建和操作 1 矩阵的输入 gt gt A A gt gt B 6 5 3 B 6 5 3 gt gt C B C 6 5 3 2 调用矩阵 gt gt A 1 2 3 4 5 A 1 2 3 4 5 gt gt a1 A 1 访
  • kvm设置桥接网卡

    kvm默认的网卡模式为nat 虚拟主机可访问外网 但外部无法访问虚拟主机 将其改为桥接模式以实现内外互通 环境 centos6图形界面下 有virtual machine manager 程序 整个过程就两步 1 修改物理机网卡为桥接模式
  • SpringBoot报错:Cannot call isReadOnlyBeforeAttachedToSession when isReadOnlySettingAvailable == true

    错误后边会说明哪个实体类导致的 在实体类上加上 Proxy lazy false
  • Apache Beam实战指南

    https mp weixin qq com s biz MzU1NDA4NjU2MA mid 2247492538 idx 2 sn 9a2bd9fe2d7fd681c10ebd368ef81c9c chksm fbea5a75cc9dd
  • [原创]LoadRunner 12.02 录制脚本时提示无Internet访问,如何解决?

    在使用LoadRunner 12 02 进行录制脚本时提示无Internet访问 如下图 翻译中文如下 可以尝试以下方式解决 点击弹出框中的 Yes 即可 若还是有问题 尝试以下方式 1 LR12走的是证书机制 你按照我附件 图片1 中提供
  • springboot集成springsecurity + jwt的使用

    当项目中要用到用户的认证及权限的时候我们一般会使用 springSecurity来解决 引入 引入很简单
  • 学习若依框架----之----获取登录登录系统、ip、浏览器信息

    文章目录 1 导入需要用到的依赖 2 IP获取 3 AddressUtils 获取地址类 4 登录日志管理工具 4 SpringUtils获取bean工具 5 客户端工具 6 使用 7 测试 8 数据库记录 若依里面 创建登录日志是根据异步
  • USDT信用卡和转账入账接口

    class Usdtpay public function index data this gt request gt param uid data uid token data token type data type changeid
  • 经验模态分解(EMD)

    目录 1 背景 2 时间序列平稳性 3 EMD 方法 4 EMD 过程 5 EMD 方法的缺陷 6 Python 1 背景 实际工程测量中由于测量系统受外界环境影响经常在测量信号中产生趋势项 趋势项是指信号中周期大于采样长度的频率成分 通常