python实现PyEMD经验模态分解残差量分析
作者:Cyril_KI 发布时间:2022-06-22 05:26:17
前言
PyEMD是经验模态分解 (EMD)及其变体的Python实现,EMD最流行的扩展之一是集成经验模态分解 (EEMD),它利用了噪声辅助执行的集成。
顾名思义,这个包中的方法获取数据(信号)并将其分解为一组组件。所有这些方法理论上都应该将信号分解为同一组分量,但实际上有很多细微差别和不同的方法来处理噪声。无论采用何种方法,获得的分量通常称为本征模态函数(IMF),以强调它们包含固有(自身)属性,即特定振荡(模态)。(以上来自官方文档)
两种实现形式
最近尝试实现CEEMDAN,CEEMADN也是EMD的一种变体。按照官方API,有以下两种形式的写法:
大部分博客采用的是第一种写法:
ceemdan = CEEMDAN()
ceemdan.ceemdan(load)
imfs, res = ceemdan.get_imfs_and_residue()
vis = Visualisation()
vis.plot_imfs(imfs, res)
这种写法得到的图为:
第二种写法,也是官方的写法:
ceemdan = CEEMDAN()(load)
imfs, res = ceemdan[:-1], ceemdan[-1]
vis = Visualisation()
vis.plot_imfs(imfs, res)
得到的图示为:
可以发现,两张图最大的区别在于Res。一般论文中给出的图示是第二种。
我们尝试输出第一种方法中的Res:
[ 0.00000000e+00 -2.84217094e-14 0.00000000e+00 ... -2.84217094e-14
0.00000000e+00 0.00000000e+00]
可以发现其量级特别小,还原时我们可以不加上这一部分。而方法二中的Res显然量级是最大的,还原时必须加上。
因此,方法一中的Res是我们一般人所理解的残余量,在真正进行建模时可以不考虑。
方法一中画图时如果我们不包含残余量,即:
vis.plot_imfs(imfs=imfs, residue=res, include_residue=False)
我们将得到:
区别
在github上经过交流后,得到如下结论:
方法一中的Res是真正意义上的残余量,或许叫残差更合适一点,也就是分解之后不能再分解的部分。在PyEMD的源码中被定义为:
S * scale_s - np.sum(self.C_IMF, axis=0)
因此,ceemdan.get_imfs_and_residue()实际上得到的是最终的IMF和重建误差,而不是残差。
残差的正确获取方式是ceemdan[-1]。
来源:https://blog.csdn.net/Cyril_KI/article/details/124370191
猜你喜欢
- 如何提高Request集合的使用效率?以加快程序处理速度: strTitle=Request.Form("Title&q
- 话不多说,直接上代码import copyimport cv2import numpy as npWIN_NAME = 'draw_
- jQuery之所以如此流行并被从大公司到个人博客的几乎每个人都广泛使用,是因为它上手和使用相当简单,而且为我们提供了一些人都不知道的相当棒的
- 内容摘要:我们在浏览一些文章的时候,当鼠标选中一些文字的时候,就出现了一些隐藏的字符,平常是看不到的。这些干扰码一般有两种,一是随机无意义的
- 学习使用存储过程(Stored Procedure),是ASP程序员的必须课之一。所有的大型数据库都支持存储过程,比如Oracle
- <?php function BigEndian2Int($byte_word, $signed = false) { $int_va
- 因为这两天在弄自己的一个问答程序www.sosoask.com ,结果发现开发人员把我的存储过程加密了,郁闷,还好找到解决方法了,现在共享下
- 网上有这样一道题目:一个字符串String=“adadfdfseffserfefsefseetsdg”,找出里面出现次数最多的字母和出现的次
- zy3287 问:<script src="js.js?id=999" type="text/javas
- <?php /*============================文件说明===========================
- 本文实例讲述了php7 参数、整形及字符串处理机制修改。分享给大家供大家参考,具体如下:参数处理机制修改一、重复参数命名不再支持。重复的参数
- 临近下班的时候,突然想到统计热门文章的问题。以前我所知道的热门文章统计,基本有这么几种:按点击数排序 该方法最大的问题在于热门的文章会越来越
- 一、前言Celery是一个基于python开发的分布式任务队列,而做python WEB开发最为流行的框架莫属Django,但是Django
- 本文实例讲述了php中使用key,value,current,next和prev函数遍历数组的方法。分享给大家供大家参考。具体分析如下:ph
- 我希望大家看到该标题就能让想象到它的功能: 1、WITH TEMPL
- 运行以下代码: Dim com As ADODB.Command Dim rst
- 汉字转换为UTF-8的一段代码终于找到这段代码了,一个ASP写的中文转UTF-8,大家可以试试function chinese2u
- 事物绝非十全十美总有强差人意的一面,之前针对浮动分析了其引起文本重影的怪异问题,而作为浮动布局的最佳搭档定位布局也存在一定的缺陷。围绕着定位
- 本文实例讲述了Python实现根据日期获取当天凌晨时间戳的方法。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-
- ExpiresAbsolute 属性指定缓存于浏览器中的页的到期日期和时间语法Response.ExpiresAbsolute [