时序信号高低频分析——经验模态分解EMD

2024-03-26 17:52

本文主要是介绍时序信号高低频分析——经验模态分解EMD,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

时序信号高低频分析——经验模态分解EMD

介绍

经验模态分解(Empirical Mode Decomposition,EMD)是一种用于时序信号分解的自适应方法,旨在将原始信号分解为多个固有模态函数(Intrinsic Mode Functions,IMF)的线性组合。EMD是一种数据驱动的分解方法,不需要预先定义基函数或滤波器,并且适用于非线性和非平稳信号的分解和分析。

原理

EMD的基本思想是通过挑选信号中的局部极值点(局部最大值和局部最小值)来构造包络线,并利用包络线来提取信号中的各种振动成分。具体步骤如下:

  1. 提取局部极值点:找到信号中的局部最大值和局部最小值点。

  2. 连接局部极值点:连接相邻的局部极值点,得到上包络线和下包络线。

  3. 计算均值包络线:将上包络线和下包络线的均值作为信号的均值包络线。

  4. 计算细化的包络线:用原始信号减去均值包络线得到细化的包络线。

  5. 重复迭代:将细化的包络线作为新的信号进行迭代,直到满足停止条件(如提取的 IMFs 符合某种特定的物理条件)。

  6. 提取IMF:最终得到的信号即为一组固有模态函数(IMFs),它们是信号中包含的各种振动模式。

公式

在EMD的过程中,每次迭代都会得到一组IMFs,这些IMFs满足以下两个条件:

  1. 极值点和零点的个数相同:IMFs 的极值点(局部最大值和局部最小值)和零点(与 x 轴相交的点)的个数相同或最多相差一个。

  2. 对称分布:IMFs 应在零点附近呈现对称分布。

Python实现

为了实现EMD的分解,我们可以使用PyEMD库,它是Python的一个库,提供了实现EMD和Hilbert-Huang变换的功能。

下面是使用PyEMD库绘制IMF图的示例代码:

import numpy as np
import matplotlib.pyplot as plt
from PyEMD import EMD# 生成示例信号
t = np.linspace(0, 1, 1000)
s = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 20 * t)# 创建EMD对象
emd = EMD()# 进行EMD分解
IMFs = emd(s)# 绘制IMF图
plt.figure(figsize=(12, 8))
for i, imf in enumerate(IMFs):plt.subplot(len(IMFs), 1, i+1)plt.plot(t, imf, 'r')plt.title(f'IMF {i+1}')
plt.tight_layout()
plt.show()

在这里插入图片描述

以上代码将生成一个示例信号,然后利用PyEMD库进行EMD分解,并绘制每个IMF的图像。每个IMF代表了原始信号中不同的频率成分。

总结

EMD作为一种数据驱动的信号分解方法,具有很好的自适应性和适用性,适用于各种非线性和非平稳信号的分析。通过将原始信号分解为多个IMFs,EMD能够将信号的各种振动模式分离出来,从而更好地理解信号的特性和行为。在实际应用中,EMD常被用于信号处理、振动分析、生物医学工程等领域,为数据分析和特征提取提供了有力的工具。

这篇关于时序信号高低频分析——经验模态分解EMD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/849359

相关文章

[职场] 护理专业简历怎么写 #经验分享#微信

护理专业简历怎么写   很多想成为一名护理方面的从业者,但是又不知道应该怎么制作一份简历,现在这里分享了一份护理方面的简历模板供大家参考。   蓝山山   年龄:24   号码:12345678910   地址:上海市 邮箱:jianli@jianli.com   教育背景   时间:2011-09到2015-06   学校:蓝山大学   专业:护理学   学历:本科

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

22.手绘Spring DI运行时序图

1.依赖注入发生的时间 当Spring loC容器完成了 Bean定义资源的定位、载入和解析注册以后,loC容器中已经管理类Bean 定义的相关数据,但是此时loC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况 发生: 、用户第一次调用getBean()方法时,loC容器触发依赖注入。 、当用户在配置文件中将<bean>元素配置了 lazy-init二false属性,即让

21.手绘Spring IOC运行时序图

1.再谈IOC与 DI IOC(lnversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让 容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们所看到的配置文件。 DI(Dependency Injection)依赖注入:就是指对象是被动接受依赖类

[职场] 公务员的利弊分析 #知识分享#经验分享#其他

公务员的利弊分析     公务员作为一种稳定的职业选择,一直备受人们的关注。然而,就像任何其他职业一样,公务员职位也有其利与弊。本文将对公务员的利弊进行分析,帮助读者更好地了解这一职业的特点。 利: 1. 稳定的职业:公务员职位通常具有较高的稳定性,一旦进入公务员队伍,往往可以享受到稳定的工作环境和薪资待遇。这对于那些追求稳定的人来说,是一个很大的优势。 2. 薪资福利优厚:公务员的薪资和

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

高度内卷下,企业如何通过VOC(客户之声)做好竞争分析?

VOC,即客户之声,是一种通过收集和分析客户反馈、需求和期望,来洞察市场趋势和竞争对手动态的方法。在高度内卷的市场环境下,VOC不仅能够帮助企业了解客户的真实需求,还能为企业提供宝贵的竞争情报,助力企业在竞争中占据有利地位。 那么,企业该如何通过VOC(客户之声)做好竞争分析呢?深圳天行健企业管理咨询公司解析如下: 首先,要建立完善的VOC收集机制。这包括通过线上渠道(如社交媒体、官网留言

DDS信号的发生器(验证篇)——FPGA学习笔记8

前言:第一部分详细讲解DDS核心框图,还请读者深入阅读第一部分,以便理解DDS核心思想 三刷小梅哥视频总结! 小梅哥https://www.corecourse.com/lander 一、DDS简介         DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信

[FPGA][基础模块]跨时钟域传播脉冲信号

clk_a 周期为10ns clk_b 周期为34ns 代码: module pulse(input clk_a,input clk_b,input signal_a,output reg signal_b);reg [4:0] signal_a_widen_maker = 0;reg signal_a_widen;always @(posedge clk_a)if(signal_a)