希尔伯特黄变换信号处理_希尔伯特变换后频谱图

希尔伯特黄变换信号处理_希尔伯特变换后频谱图希尔伯特黄变换(Hilbert-Huang)包括两部分工作,分别是经验模态分解(EMD)和希尔伯特变换(HT)。经验模态分解:找到信号x(t)的极大值和极小值,通过三次样条拟合得到上、下包络线,计算其均值得m1(t). 得到第一个分量,检擦其是否满足模态分量的条件:①得极大值点与过0点数量相差不超过1个;②的上、下包络线均值恒为0。如不满足,重复操作1、2直至得到满足模态函数…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

希尔伯特黄变换(Hilbert-Huang)包括两部分工作,分别是经验模态分解(EMD)和希尔伯特变换(HT)。

 

1. 经验模态分解:

  1. 找到信号x(t)的极大值和极小值,通过三次样条拟合得到上、下包络线,计算其均值得m1(t).
  2. 得到第一个分量  h_1{}(t)=x(t)-m_1{}(t) , 检擦其是否满足模态分量的条件: ①  h_1{}(t) 得极大值点与过0点数量相差不超过1个;② h_1{}(t) 的上、下包络线均值恒为0。如不满足,重复操作1、2直至得到满足模态函数(IMF)条件的模态分量 c_1{}(t).
  3. 原始信号减去第一个模态分量,得到信号 r_{1}(t)=x(t)-c_{1}(t) , 将 r_{1}(t) 当成新的“原始信号”,重复以上操作,直至筛选条件      SD=\frac{\sum_{t=0}^{T}|h_{k-1}(t)-h_{k}(t)|^{2}}{\sum_{t=0}^{T}h_{k-1}^{2}}        小于预设值时,经验模态分解结束。这样原始信号便分成若干经验模态分量和一个残余信号:    x(t)=\sum_{i=0}^{n}c_{i}+r_{n}(t)

2. 希尔伯特变换:

对每个IMF ci(t)求其Hilbert变换:d_{i}(t)=\frac{1}{\pi }\int_{-\infty }^{+\infty}\frac{c_{1}(\tau)}{t-\tau}d\tau ; 根据\omega _{i}(t)=\frac{d\theta _{i}(t)}{dt}a_{i}(t) = \sqrt{c_{i}^{2}(t)+d_{i}^{2}(t))}

可以求得相应IMF的瞬时频率和瞬时幅值,可将原始信号表示成    x(t)=\sum_{i=1}^{n}a_{i}(t)e^{j\int \omega _{i}(t)dt}  ,在经过nEMD分解后,残余信号r_{n}(t)常熟或单调函数,对信号提取没有实质影响,故舍去。

3. 方法缺陷:

信号的端点不可能同时处于极大值或极小值,因此,上、下包络在数据序列两端会发散,且这种发散会随着运算的进行而逐渐向内,从而使得整个数据序列受到影响。EMD分解存在的端点效应,目前有端点镜像方法、多项式拟合法、极值延拓法、平行延拓法等进行改善。

4. MATLAB(2018rb版本)实现和探讨

#代码详见下面网址

使用两个信号叠加作为分析对象

经验模态分解后得到的imf分量分布:

希尔伯特黄变换信号处理_希尔伯特变换后频谱图

这是希尔伯特黄变换后得到的频谱图:

希尔伯特黄变换信号处理_希尔伯特变换后频谱图

##其实对比时频谱图和imf分量图就可以发现,时频谱图是imf图加上能量分布而已,如下:

希尔伯特黄变换信号处理_希尔伯特变换后频谱图

希尔伯特黄变换信号处理_希尔伯特变换后频谱图

##边际谱

时频谱图已经出来,下面可根据边际谱求解公式求解边际谱。如下:

h(\omega)=\int_{0}^{T}H(\omega,t)dt

       这个公式是固定ω不变,对t积分。定积分在离散中可以近似分解为多个长方形的面积和。在离散信号中,H(ω,t)是时频谱矩阵H(ω,k),长方形的长为第k个数据对应的H(ω,k),宽为时间间隔,即\Delta t=1/f_{s}(采样频率的倒数),因此积分公式可改为如下公式:

h(\omega)=\sum_{k=1}^{N}H(\omega,k)* 1/f_{s}

因此,边际谱本来可以用一行代码搞定:

bjp = sum(hs,2)*1/fs

但问题来了,由自带函数HHT得到hs的数据顺序是错的。时频谱矩阵相当于把时频谱行方向用频率切割,列方向用时刻切割,得出多个小方块,每一个方块对应的频率用中心频率表示,对应的时刻则记录数据的时刻,小方块里的数据则表示该时刻,该频率的能量值(振幅的平方)。

希尔伯特黄变换信号处理_希尔伯特变换后频谱图

hs是个稀疏矩阵,只记录非零的位置,和该位置对应的能量。但在这里,两者的顺序不同,hs记录的位置按以下方向记录:

希尔伯特黄变换信号处理_希尔伯特变换后频谱图

然而对应的能量数据,是按得到的imfinse矩阵的顺序排列,两者不相匹配。因此,得到的hs矩阵是一个错误的时频谱矩阵,不能直接用来计算边际谱。

那么,接下来的工作只能根据得到的imf分量每一时刻的瞬时频率和瞬时能量来获得时频谱矩阵。

其实关键步骤是把每一个瞬时频率对应的小方格确定就可以了,然后把每一个小方格内的所有分量的能量累加即可:

时频矩阵大小和hs一样,最大频率为采样频率的一半。

确定中心频率向量

每一个瞬时频率所在的小方格

然后把k<=0的剔除,再累加,就可以得到时频谱矩阵,然后计算得到边际谱,如下图所示:

希尔伯特黄变换信号处理_希尔伯特变换后频谱图

以下是最新代码且包含相关报告,点此链接下载:

说明:代码受到用户很高的褒赞,很荣幸,但请别忘记【点赞】+【收藏】,了解其内核并写代码不易,希望理解!

如果有其他问题可评论,会不定时根据问题进行更新

请先点赞+收藏再下载

需要私信

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182237.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java面向对象三大特性「建议收藏」

    java面向对象三大特性「建议收藏」一、面向对象的概念面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物使用对象的关系来描述事物之间的联系,这种思想就是面向对象。提到面向对象,自然会想到面向过程,面向过程就是分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候一个一个依次调用就可以了。面向对象则是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。当然,一个应用程序会包含多个对象,通过多个对象的相互配合来

    2022年7月8日
    18
  • 云计算与大数据技术应用 第四章课后答案_云计算原理与实践

    云计算与大数据技术应用 第四章课后答案_云计算原理与实践数据中心数据中心的概念数据中心,顾名思义就是数据的中心,是处理和存储海量数据的地方,英文全称为DataCenter。用专业的名词解释,数据中心是全球协作的特定设备网络,用来在internet网络基础设施上传递、加速、展示、计算、存储数据信息。尽管数据中心听起来神秘高大上,但按照最简单直接的理解,数据中心实际上就是我们个人电脑的扩大版,你的家用电脑就是你个人的数据中心。一般来讲,数据中心主要有几大部分构成:机房(建筑物本身)、供配电系统、制冷系统、网络设备、服务器设备、存储设备等。那数据中心的这些构成模

    2022年10月5日
    3
  • Linux dos攻击服务器,Linux服务器如何防止DoS攻击「建议收藏」

    Linux dos攻击服务器,Linux服务器如何防止DoS攻击「建议收藏」对Linux系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以在/etc/security/limits.conf中添加如下几行:*hardcore0*hardrss5000*hardnproc20然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。sessionrequired/lib/security/pam_li…

    2022年10月1日
    3
  • JAVA实现数据库_数据库是如何解决并发问题

    JAVA实现数据库_数据库是如何解决并发问题Java开源数据库引擎,数据库计算封闭性的一站式解决方案。

    2025年7月22日
    1
  • 2021.12.13版本pycharn激活码_在线激活

    (2021.12.13版本pycharn激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0…

    2022年3月30日
    36
  • python的命名规则_python命名规则[通俗易懂]

    python的命名规则_python命名规则[通俗易懂]广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!1、模块模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)#正确的模块名importdecoderimporthtml_parser#不推荐的模块名importdecoder-特殊的如init模块,如果模块是包的私有模块会使用前缀加一个…

    2022年6月25日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号