EMD经验模态分解介绍

news2024/11/15 6:44:29

EMD概述

        其实一种信号分解方法,是一种自适应的数据处理方法,适合非线性和非平稳时间序列的分析和研究,其本质是对数据序列或信号的平稳化处理。

        将上面6个信号叠加如下:

         就是6个简单信号叠加,形成一个复杂信号。

核心思想

        经验模态分解就是把观察到的时间序列分解为有限个序列,每个序列具有某种特征,就是上面过程的逆过程,将复杂图片分解为简单图片。

        第一个信号加第二个信号就合成了第三个杂乱无章的信号。

基本步骤

        1.找到信号的局部最大值和局部最小值,局部最大值为红点,局部最小值为绿点:

        2.用二次样条函数或者直接用直线拟合起来:

         3.求得平均线(黑线):(红线+绿线)/2

 

         4.用原始信号减去黑线,如下:

         5.重复1~3步:

        6.然后在用第4步的线减去第五步的黑线:

        7.继续重复以上步骤

        8.中止条件:

         知道零点以下没有两个连续的极大值和极小值,此时的曲线叫做残差项。

        原始线减去黑线这类线叫做IMF,最上面的曲线可以分解为IMF1+IMF2+....+IMFN+残差项。

和其他方法的对比

        无论是傅里叶变换还是小波分解,他们分解的信号都是从-inf~inf,这一点在实际中无法实现。

        经验模态分解没有基函数,小波和傅里叶分解都有基函数,从这个角度来讲,经验模态分解是一种自适应分解方法。导致数据分解分解出来的若干个信号非常有限。

        正常情况下,一般分解最多可以到15个IMF,正常情况下是分解到6个IMF。

        经验模态分解没有严格的数学理论作为基础支撑。

应用案例:带合成的经验模态分解方法与新的原油价格形成机制理论

原油价格由什么决定: (是由什么决定的,供求关系对原油关系的占比多大)

        1973年之前的价格都是平的,后面产生烈波动时都发生了战争,下面把该图片压扁即为:

 然后进行经验模态分解:

         然后就看到残差曲线(红线),假定红线是供求关系对原油价格的影响(因为原油的需求是越来越多了)。

         IMF1~IMF7是一个高频到低频的过度,

       然后绿线是低频合成的曲线,红线是高频合成的曲线,蓝线是原始曲线。绿线上的拐点和重大的曲线上发生重大事件的节点对应起来了。 

        因此,原油价格的波动有3个原因:1.供求关系  2.对短期造成影响的事件(红线,基金炒作,货币政策调整等事件)  3.对长期造成影响的事件。

        结论是得到了原油价格的定价理论。

 EEMD概述

        EMD会产生模态混叠现象,即一个IMF的信号频带会很宽,涵盖了低频和高频信号,实际中,我们希望某一个IMF信号的频带尽可能集中。

        EEMD(ensemble empirical mode decomposition)由于白噪声的尺度特征在整个时频域上均匀分布,进行EMD分解时,各种尺度特征中都会含有白噪声的成份。如果给信号添加白噪声后进行分解,那么信号含有的某种尺度特征,会被分解到与白噪声相对应的尺度特征上去。虽然噪声的不确定性,使得其在单次分解时,可能影响到信号的分解结果,但根据白噪声的统计特性,如果添加不同的白噪声,对大量分解结果求均值,各尺度特征中的噪声成份会相互抵消,最后只剩下待分解信号。

EEMD的实施步骤如下:

具体优势:

         可以看到,EEMD频带更加集中。

CCEMD概述

        CCEMD(complementary ensemble empirical mode decomposition),添加的高斯白噪声都是互补的,即满足:w^i[n]+w^{i+1}[n]=0,一对一对的对噪声进行添加。

CEEMDAN概述

   

        小结论:CEEMDAN和EEMD比CEEMD,EMD效果要好,CEEMDAN的运算速度比EEMD更快。

代码实现(pip install EMD-signal):

EMD实现:

      

import numpy as np
from PyEMD import  EMD
import pylab as plt
t = np.linspace(0,1,200)
s = np.cos(11*2*np.pi*np.pi*t*t) + 6*t*t
#EMD分解
IMF = EMD().emd(s,t)
N = IMF.shape[0]+1
#画图
plt.subplot(N,1,1)
plt.plot(t,s,"r")
plt.title("Input signal: $S(t)=cos(22/pi t^2 + 6t^2)$")
for n,imf in enumerate(IMF):
    plt.subplot(N,1,n+2)
    plt.plot(t,imf,"g")
    plt.title("IMF" + str(n+1))
plt.tight_layout()
plt.show()

  EEMD实现:

import numpy as np
from PyEMD import  EEMD
import pylab as plt
t = np.linspace(0,1,200)
s = np.cos(11*2*np.pi*np.pi*t*t) + 6*t*t
#EEMD分解
eemd = EEMD()
emd = eemd.EMD
emd.extrema_detection = "parabol"
IMF = eemd.eemd(s,t)
N = IMF.shape[0]+1
#画图
plt.subplot(N,1,1)
plt.plot(t,s,"r")
plt.title("Input signal: $S(t)=cos(22/pi t^2 + 6t^2)$")
for n,imf in enumerate(IMF):
    plt.subplot(N,1,n+2)
    plt.plot(t,imf,"g")
    plt.title("IMF" + str(n+1))
plt.tight_layout()
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/840586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台3

吃完快餐粥,除了粥的味道不错之外,我对个快餐盒的圆盖子产生了兴趣,能否做个极低成本的简易机器人呢?也许只需要二十元左右 知识点:轮子(wheel) 中国词语。是用不同材料制成的圆形滚动物体。简…

JavaWeb三大组件——Listener

目录 Listener 八个Web监听器 注册Listener 父pom文件 pom文件 使用注解方式 ServletListener HelloServlet 启动类 通过RegistrationBean注册 ServletListener HelloServlet MyWebConfig 启动类 运行结果 Listener 作用:监听某个事件的发生&#xf…

区块链实验室(16) - FISCO BCOS实验环境

经过多次重复,建立一个FISCO BCOS实验环境。该环境是一个VMWare虚拟机,能够启动FISCO BCOS自创建的4节点区块链,不必下载依赖包即可编译Fisco Bcos目标文件,安装有VsCode1.81版本。 启动4节点的Fisco Bcos区块链 启动控制台 编译…

CHI(六)独占访问

AMBA5 CHI Architecture Specification IssueF 1. overview 独占访问的原则是,执行独占序列的逻辑处理器(LP)执行以下操作: 对一个地址执行exclusive load。计算要存储到该位置的新值。对该地址进行exclusive store。 支持对可…

【肺炎分类数据集】数据量非常充足的新冠肺炎分类数据共享

一、肺炎数据集介绍🍉: 1.1 格式🎈 按照标准的格式分为了①训练集train(134138575198张),②验证集val(8816张),③测试集test(234390624张)&#…

redis入门3-在java中操作redis

Redis的java客户端 Jedis、Lettuce、Redisson、以及spring提供的spring data redis Jedis操作redis //添加依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.0</version> </dep…

DAY3,C高级(shell中的变量、数组、算术运算、分支结构)

1.今日思维导图&#xff1b; 2.判断家目录下&#xff0c;普通文件的个数和目录文件的个数&#xff1b; 1 #!/bin/bash2 arr1(ls -la ~/ | cut -d r -f 1 | grep -w -)3 arr2(ls -la ~/ | cut -d r -f 1 | grep -w d)4 echo "普通文件个数&#xff1a;${#arr1[*]}"5 e…

SpringCloud深度学习(在更)

微服务简介 微服务是什么&#xff1f; 微服务是一种架构风格&#xff0c;将一个大型应用程序拆分为一组小型、自治的服务。每个服务都运行在自己独立的进程中&#xff0c;使用轻量级的通信机制&#xff08;通常是HTTP或消息队列&#xff09;进行相互之间的通信。这种方式使得…

Tensorrt 原生Activate 算子讲解

Tensorrt operators docs&#xff1a; Activation Apply an activation function on an input tensor A and produce an output tensor B with the same dimensions. import numpy as np from cuda import cudart import tensorrt as trt # 输入张量 NCHW nIn, cIn, hIn, wI…

【每日一题】—— B1. Palindrome Game (easy version)(Codeforces Round 721 (Div. 2))

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

Oracle-expdp报错ORA-39077、06502(Bug-16928674)

问题: 用户在使用expdp进程导出时&#xff0c;出现队列报错ORA-39077、ORA-06502 ORA-31626: job does not exist ORA-31638: cannot attach to job SYS_EXPORT_SCHEMA_01 for user SYS ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95 ORA-06512: at "SYS.KUPV$…

React 核心开发者 Dan Abramov 宣布从 Meta 离职

导读React.js 核心开发者、Redux 作者 Dan Abramov 在社交平台发文宣布&#xff0c;将辞去在 Meta 的职务&#xff1a; “我感到苦乐参半&#xff0c;几周后我就要辞去 Meta 的工作了。在 Meta 的 React 组织工作是我的荣幸。感谢我过去和现在的同事接纳我&#xff0c;容忍我犯…

MySql的Windows安装指南

目录 一、MySQL的4大版本 二、软件的下载 三、MySQL8.0 版本的安装 四、配置MySQL8.0 五、配置MySQL8.0 环境变量 六、登录验证 一、MySQL的4大版本 MySQL Community Server 社区版本&#xff0c;开源免费&#xff0c;自由下载&#xff0c;但不提供官方技术支持&#xff…

RIP Bram Moolenaar

Grateful for your work on Vim and for the impact Vim has had on the world. Thank you for everything, Bram.

原创 | 图神经网络在区块链交易数据分析研究中的应用

作者&#xff1a;王佳鑫本文约3000字&#xff0c;建议阅读6分钟区块链技术带来的重大变革&#xff0c;也对金融服务、生态安全、隐私保护提出了诸多挑战。 加密数字货币是数字货币的一种&#xff0c;它不依靠法定货币机构发行&#xff0c;不受央行管控。借助于区块链等新兴技术…

机器学习中的人生启示:“没有免费的午餐”定理(NFL)的个人发展之道→探讨感觉和身边其他人有差距怎么办?

文章目录 1 引言2 探究NFL定理的含义3 将NFL定理应用于个人发展4 探索个人兴趣和天赋5 结论 1 引言 机器学习中的“没有免费的午餐”定理&#xff08;NFL&#xff09;是一条深具启示意义的原则。该定理表明&#xff0c;没有一种算法可以在所有问题上都表现最好。在机器学习领域…

MyBatis核心 - SqlSession如何通过Mapper接口生成Mapper对象

书接上文 MyBatis – 执行流程 我们通过SqlSession获取到了UserMapper对象&#xff0c;代码如下&#xff1a; // 获取SqlSession对象 SqlSession sqlSession sqlSessionFactory.openSession();// 执行查询操作 try {// 获取映射器接口UserMapper userMapper sqlSession.get…

C语言----字节对齐

一&#xff1a;字节对齐的概念 针对字节对齐&#xff0c;百度百科的解释如下&#xff1a; 字节对齐是字节按照一定规则在空间上排列&#xff0c;字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位&#xff0c;一个字节等于8位二进制数&#xff0c;在UTF-8编…

PS设计技巧01

大部分切图工作都是在PS中完成的 1、如何得知宽度和高度&#xff0c;先截个图&#xff1a; 2、找个文件夹&#xff0c;把截取的图片放进去&#xff0c;然后ctrl o 把图片文件放进去 3、存入图片&#xff0c;我们用的是网页图片&#xff0c;用的是ctrl r键&#xff0c;调出标尺…

记录电赛色块追踪部分

代码其实也很简单&#xff0c;我只不过加入了按键控制暂停、蜂鸣器、led和如何控制追踪的效果&#xff08;调PID&#xff09;。B站的那些大神早早地完成了要求&#xff0c;我犯了一个不好地错误&#xff0c;企图三连让他们分享思路&#xff0c;这是不对的&#xff0c;电赛本身的…