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

news2024/9/23 21:22:08

时序信号高低频分析——经验模态分解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常被用于信号处理、振动分析、生物医学工程等领域,为数据分析和特征提取提供了有力的工具。

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

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

相关文章

【c++】类和对象(二)this指针

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本节内容来到类和对象第二篇,本篇文章会带领大家了解this指针 目录 1.this指针1.1this指针的引出1.2this指针的特性1.3思考题1.4C语言和C实现Stack的对…

RWTH-PHOENIX Weather数据集模型说明和下载

RWTH-PHOENIX Weather 2014 T数据集说明: 德国公共电视台PHOENIX在三年内(2009 年至 2011 年) 录制了配有手语翻译的每日新闻和天气预报节目,并使用注释符号转录了 386 个版本的天气预报。 此外,我们使用自动语音识别和手动清理来转录原始德语语音。因此,该语料库允许训练…

近线数仓优化改造

近线数仓优化改造 1. 背景2. 优化3. 改造3.1. 重构3.2. 优化 1. 背景 大概就是有那么一个数仓,然后简略结构如下: #mermaid-svg-PVoUzuQhj2BK7Qge {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid…

【C语言】动态内存管理及其常见错误

文章目录 1、前言:为什么要有动态内存分布2、三种动态内存的创建方式及其释放2.1 malloc2.2 calloc2.3 ralloc2.4 free 3、常⻅的动态内存的错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问3.3 对非动态开辟内存使用free释放3.4 使⽤free释放⼀块动态开…

C++动态内存管理:new/delete与malloc/free的对比

在C中,动态内存管理是一个至关重要的概念。它允许我们在程序运行时根据需要动态地分配和释放内存,为对象创建和销毁提供了灵活性。在C中,我们通常会用到两对工具:new/delete 和 malloc/free。虽然它们都能够完成类似的任务&#x…

2月线上速溶咖啡行业数据分析:“减肥咖啡”引领电商新潮流

随着生活节奏的加快,速溶咖啡因其便捷性受到广大消费者的青睐。不过,在如今世界咖啡市场激烈竞争的情况下,中国速溶咖啡市场也受到影响,增速有所放缓。 根据鲸参谋电商数据平台显示,2月线上综合电商(京东天…

003_vector_conventions_in_MATLA中的向量约定

MATLAB中的向量约定 1. 前言 MATLAB是一种用于数值计算和数据可视化的高级编程语言。以前,都不好意思说它是编程语言,它实际上只是一个脚本工具,配套了一堆工具箱。比如Simulink,可以开展非常复杂的仿真,还能编译到实…

海外媒体发稿:出口贸易媒体发稿7个秘籍揭晓-华媒舍

出口贸易是许多国家经济增长的关键驱动力之一。不仅可以加快国家的发展步伐,还能为企业创造巨大的商机。如何能够在出口贸易中取得成功,如何能够引起媒体的关注,成为企业广告和宣传的焦点,是许多出口企业面临的挑战。本文将揭示出…

【LeetCode热题100】108. 将有序数组转换为二叉搜索树(二叉树)

一.题目要求 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡二叉搜索树。 二.题目难度 简单 三.输入样例 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释&#x…

【Java程序设计】【C00367】基于(JavaWeb)Springboot的粮仓管理系统(有论文)

TOC 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,博客中有上百套程序可供参考,欢迎共同交流学习。 项目简介 项目获取 🍅文末点击卡片…

JVM——字符串常量池

在Java程序中String类的使用几乎无处不在,String类代表字符串,字符串对象可以说是Java程序中使用最多的对象了。首先,在Java中创建大量对象是非常耗费时间的。其次,在程序中又经常使用相同的字符串对象,如果每次都去重…

企业计算机服务器中了locked勒索病毒怎么处理?Locked勒索病毒解密流程

在网络技术不断发展应用过程中,越来越多的企业利用网络开展各项工作业务,网络为企业的生产运营提供了极大便利,但网络威胁手段也在不断增加,为企业的数据安全带来严重威胁。近日,新一波的网络勒索病毒比较猖獗&#xf…

云电脑火爆出圈,如何选择和使用?--腾讯云、ToDesk云电脑、青椒云使用评测和攻略

前言: Hello大家好,我是Dream。在当下,科技的飞速发展已经深入影响着我们的日常生活,特别是随着物联网的兴起和5G网络的普及,云计算作为一个重要的技术概念也逐渐走进了我们的视野。云计算早已不再是一个陌生的名词&am…

FANUC机器人零点标定的基本步骤(出厂数据)

FANUC机器人零点标定的基本步骤(出厂数据) FANUC 零点数据存在问题的机器人通常会出现以下几种报警: (1)SRVO-062报警 - 脉冲编码器数据丢失,机器人完全不能动,具体消除方法可参考以下链接中的内容: FANUC机器人SRVO-062报警原因分析及处理对策 (2)SRVO-075报警 -…

qrcode插件-生成二维码

安装 yarn add qrcodejs2 --save npm install qrcodejs2 --save 使用 <template><div><div id"qrcodeImg"></div><!-- 创建一个div&#xff0c;并设置id --></div> </template> <script> import QRCode from q…

9.串口通信

串口基本认识 串行接口简称串口&#xff0c;也称串行通信接口或串行通讯接口&#xff08;通常指COM接口&#xff09;&#xff0c;是采用串行通信方 式的扩展接口。串行接口&#xff08;Serial Interface&#xff09;是指数据一位一位地顺序传送。其特点是通信线路简 单&#x…

qt材料库---最新版(使用QsqlDatabase、QJsonObject)

将每种材料的参数设置保存为json,并将整个json语句放到数据库中,同时显示到列表中。 选中某行时,将参数反馈到控件上 源码 Material.h #pragma once #include "QtWindow.h" #include "ui_Widget.h" #include <QWidget> #include <QObject>…

Jetson AGX ORIN 配置 FGVC-PIM 神经网络(包含 arm64 下面 torch 和 torchvision 配置内容)

Jetson AGX ORIN 配置 FGVC-PIM 神经网络 文章目录 Jetson AGX ORIN 配置 FGVC-PIM 神经网络配置 ORIN 环境创建 FGVC-PIM 虚拟环境安装 PyTorch安装 torchvision安装其他依赖包 配置 ORIN 环境 首先先配置 ORIN 的环境&#xff0c;可以参考这个链接&#xff1a; Jetson AGX …

如何为企业策划一场XR虚拟直播?

活动年年办&#xff0c;都是老一套&#xff0c;想玩点新花样&#xff1f; 预算有限&#xff0c;但还是想把活动办的逼格高一点&#xff1f; 想通过活动&#xff0c;让更多的人知道自己企业的品牌&#xff1f; 随着AIGC技术的不断演变&#xff0c;企业活动的形式和内容也在不…

深入了解 Vue 3:性能与可用性的巨大提升

摘要&#xff1a;本文深入探讨了 Vue 3 相对于 Vue 2 在性能和可用性方面的重大改进&#xff0c;特别关注了虚拟 DOM 模块的重构&#xff08;静态提升&#xff09;、基于 Proxy 的响应式对象、事件缓存、更好的 Tree Shaking 支持、TypeScript 和 Monorepo 代码组织&#xff0c…