EMD经验模态分解介绍

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.mfbz.cn/a/60567.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java精品项目系统第151期大学生校园帮系统打包(编号S063)

Java精品项目系统第151期大学生校园帮系统打包(编号S063) 大家好,小辰今天给大家介绍一个基于Spring Springboot MyBatis实现的大学生校园帮系统,演示视频文章末尾公众号对号查询观看即可 文章目录 Java精品项目系统第151期大学…

flink1.17 eventWindow不要配置processTrigger

理论上可以eventtime processtime混用,但是下面代码测试发现bug,输入一条数据会一直输出. flink github无法提bug/问题. apache jira账户新建后竟然flink又需要一个账户,放弃 bug复现操作 idea运行代码后 往source kafka发送一条数据 a,1,1690304400000 可以看到无限输出…

etcd

文章目录 etcd单机安装设置键值对watch操作读取键过往版本的值压缩修订版本lease租约(过期机制)授予租约撤销租约keepAlive续约获取租约信息 事务基于etcd实现分布式锁原生实现官方 concurrency 包实现 服务注册与发现Go 操作 Etcd 参考 etcd etcd 是一…

计算机网络-三种交换方式

计算机网络-三种交换方式 电路交换(Circuit Switching) 电话交换机接通电话线的方式称为电路交换从通信资源分配的角度来看,交换(Switching)就是按照某种方式动态的分配传输线路的资源 电话交换机 为了解决电话之间通信两两之间连线过多,所以产生了电话…

原型模式(Prototype)

原型模式是一种创建型设计模式,使调用方能够复制已有对象,而又无需使代码依赖它们所属的类。当有一个类的实例(原型),并且想通过复制原型来创建新对象时,通常会使用原型模式。 The Prototype pattern is g…

解决Pycharm下opencv代码提示问题

解决Pycharm下opencv代码提示问题 新安装了opencv-python4.7.0.72版本,在pycharm中导入cv2后没有代码提示,解决方法如下: 解决方案 我使用的是miniconda环境,opencv安装的路径为:C:\Env\miniconda3\envs\compute\Li…

Vue3和TypeScript项目-移动端兼容

1 全局安装typescript 2 检测安装成功 3 写的是ts代码,但是最后一定要变成js代码,才能在浏览器使用 这样就会多一个js文件 3 ts语法 数组语法 对象语法 安装vue3项目 成功后进入app。安装依赖。因为我们用的是脚手架,要引入东西的时候不需要…

python的下载和安装步骤,python下载安装教程3.10.0

大家好,给大家分享一下python下载安装教程3.10.0,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载&a…

【Java】UWB高精度工业人员安全定位系统源码

基于VueSpring boot前后端分离架构开发的一套UWB技术高精度定位系统源码。 UWB高精度人员定位系统提供实时定位、电子围栏、轨迹回放等基础功能以及各种拓展功能,用户可根据实际需要任意选择搭配拓展功能。该系统简易部署,方便使用,实时响应。UWB高精度定…

【小沐学前端】GitBook制作在线电子书、技术文档(gitbook + Markdown + node)

文章目录 1、简介1.1 工具简介1.2 使用费用 2、安装2.1 安装node2.2 安装gitbook 3、测试3.1 编辑文档3.2 编译工程3.3 预览工程 结语 1、简介 官网地址: https://www.gitbook.com/1.1 工具简介 什么是 GitBook? GitBook 是一个现代文档平台&#xff…

黑客技术(网络安全)自学

一、黑客是什么 原是指热心于计算机技术,水平高超的电脑专家,尤其是程序设计人员。但后来,黑客一词已被用于泛指那些专门利用电脑网络搞破坏或者恶作剧的家伙。 二、学习黑客技术的原因 其实,网络信息空间安全已经成为海陆空之…

Stable Diffusion教程(6) - 图片高清放大

放大后细节 修复图片损坏 显存占用 速度 批量放大 文生图放大 好 是 高 慢 否 附加功能放大 一般 否 中 快 是 图生图放大 好 是 低 慢 是 tile模型放大 非常好 是 高 快 是 通过文生图页面的高清修复 优点:放大时能添加更多细节&am…

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

1.今日思维导图; 2.判断家目录下,普通文件的个数和目录文件的个数; 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 "普通文件个数:${#arr1[*]}"5 e…

Qt Creator中designer使用QWebEngine异常排查

Qt Creator中designer使用QWebEngine异常排查 1、前提背景 最近由于版权的原因,我们采取了自编译的Qt Creator。编译完成之后启动Qt Creator刚开始一切都是很顺利。 但是在Creator中打开designer,使用QWebEngine控件就发生了异常,Qt Creat…

单通道 6GSPS 16位采样DAC子卡模块--【资料下载】

FMC147是一款单通道6.4GSPS(或者配置成2通道3.2GSPS)采样率的12位AD采集、单通道6GSPS(或配置成2通道3GSPS)采样率16位DA输出子卡模块,该板卡为FMC标准,符合VITA57.4规范,该模块可以作为一个理想…

python数据容器

目录 数据容器 反向索引 list列表 语法 案例 列表的特点 列表的下表索引 list的常用操作 list列表的遍历 while循环遍历 for循环遍历 tuple元组 前言 元组定义 元组特点 获取元组元素 元组的相关操作 元组的遍历 while循环遍历 for循环遍历 字符串 前言…

MySQL事务篇:ACID原则、事务隔离级别及事务机制原理剖析

引言 众所周知,MySQL数据库的核心功能就是存储数据,通常是整个业务系统中最重要的一层,可谓是整个系统的“大本营”,因此只要MySQL存在些许隐患问题,对于整个系统而言都是致命的。那此刻不妨思考一个问题: …

HTML5+CSS3小实例:带标题的3D多米诺人物卡片

实例:带标题的3D多米诺人物卡片 技术栈:HTML+CSS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content…

Unity 引擎做残影效果——2、屏幕后处理方式

Unity实现残影效果 大家好&#xff0c;我是阿赵。 这里继续介绍Unity里面做残影的方法。之前介绍了BakeMesh的方法做残影&#xff0c;这一期介绍的是用屏幕后处理的方法做残影。 一、原理 之前的BakeMesh方法&#xff0c;是真的生成了很多个网格模型在场景里面。如果用后处理做…

前端如何打开钉钉(如何唤起注册表中路径与软件路径不关联的软件)

在前端唤起本地应用时&#xff0c;我查询了资料&#xff0c;在注册表中找到腾讯视频会议的注册表情况&#xff0c;如下&#xff1a; 在前端代码中加入 window.location.href"wemeet:"; 就可以直接唤起腾讯视频会议&#xff0c;但是我无法唤起钉钉 之所以会这样&…