码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 将时间序列转成图像——希尔伯特-黄变换方法 Matlab实现


    目录

    1 方法

    2 Matlab代码实现

    3 结果


    【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】

    其他:

    1.时间序列转二维图像方法及其应用研究综述_vm-1215的博客-CSDN博客

    2.将时间序列转成图像——短时傅里叶方法 Matlab实现_vm-1215的博客-CSDN博客

    3.将时间序列转成图像——小波变换方法 Matlab实现_vm-1215的博客-CSDN博客

    1 方法

    前面提到的信号处理方法基本都受到傅里叶理论的影响,不能很好的处理不规则的信号,因此,1998年Norden E. Huang 等人[9]提出经验模态分解方法,并引入Hilbert谱的概念和Hilbert谱分析方法,称为希尔伯特-黄变换(Hilbert-Huang Transform, HHT)。

    希尔伯特-黄变换主要包括两个阶段,分别是经验模态分解(EMD)和Hilbert变换(HT)。经验模态分解流程为:

    1. 找到信号的极大值和极小值找到信号f(t)" role="presentation">f(t)f(t)的极大值和极小值,通过三次样条拟合得到上、下包络线,计算其均值得m1(t)" role="presentation">m1(t)m1(t);
    2. 得到第一个分量h1(t)=f(t)−m1(t)" role="presentation">h1(t)=f(t)−m1(t)h1(t)=f(t)−m1(t), 检查其是否满足模态分量的条件:
      • h1(t)" role="presentation">h1(t)h1(t)得极大值点与过0点数量相差不超过1个;
      • h1(t)" role="presentation">h1(t)h1(t)的上、下包络线均值恒为0。如不满足,重复操作1、2直至得到满足模态函数(IMF)条件的模态分量c1(t)" role="presentation">c1(t)c1(t)。
    3. 原始信号减去第一个模态分量,得到信号r1(t)=f(t)−c1(t)" role="presentation">r1(t)=f(t)−c1(t)r1(t)=f(t)−c1(t),将r1(t)" role="presentation">r1(t)r1(t)当成新的“原始信号”,重复以上操作,直至筛选条件SD=∑t=0T|hk−1(t)−hk(t)|2∑t=0Thk−12" role="presentation">SD=∑Tt=0|hk−1(t)−hk(t)|2∑Tt=0h2k−1SD=∑t=0T|hk−1(t)−hk(t)|2∑t=0Thk−12小于预设值时,经验模态分解结束。这样原始信号便分成若干经验模态分量和一个残余信号:f(t)=∑i=0nci+rn(t)" role="presentation">f(t)=∑ni=0ci+rn(t)f(t)=∑i=0nci+rn(t)。

    相较于短时傅里叶变换和小波变换,HHT得到时频图分辨率比较低,具有较好的自适应性。

    2 Matlab代码实现

    1. clc
    2. clear
    3. close all
    4. % load signal.mat
    5. %% 输入数据
    6. % 实验数据
    7. % ts = 0:0.001:0.6;
    8. % fs = 1000;
    9. % x = cos(2*pi*20*ts) + 2*cos(2*pi*100*ts);
    10. % N = length(x);
    11. % 时间检测数据
    12. speed = xlsread('3_1_link6_28_5_30min.csv');
    13. % speed = xlsread('3_1_link1_1_5_30min.csv');
    14. x = speed';
    15. x = (x - min(x)) / (max(x) - min(x));
    16. M = length(x);
    17. fs = 500;
    18. % x = cos(2*pi*20*ts) + 2*cos(2*pi*100*ts);
    19. % fs = 500000000;
    20. % load signal;
    21. % x = signal;
    22. N = length(x);
    23. %% EMD和HT
    24. [imf,residual,info]=emd(x,'Interpolation','pchip','Display',0);
    25. figure()
    26. hht(imf,fs);
    27. % 横轴表示时间、纵轴表示频率,颜色表示能量
    28. [hs, f, t, imfinsf, imfinse] = hht(imf,fs);
    29. % hs——信号的希尔伯特谱(Hilbert Spectrum )
    30. % f——信号的频率向量(Frequency vector of signal)
    31. % t——信号的时间向量(Time vector of signal)
    32. % imfinsf——每个imf的瞬时频率(instantaneous frequency of each imf)
    33. % imfinse——每个imf的瞬时能量(instantaneous energy of each imf)
    34. im = figure(1);

    3 结果

    【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】

  • 相关阅读:
    1.Javascript-JavaScript事件
    回顾复习【矩阵分析】初等因子 和 矩阵的相似 || 由不变因子求初等因子 || 由初等因子和秩求Smith标准形(不变因子)
    音频语言学习领域数据集现状、分类及评估
    Harmony | 超好用的单细胞测序数据合并(3‘和5‘数据合并)(二)
    指针(四)- 函数指针和回调函数
    shap库源码和代码实现
    Pytorch之卷积层实战
    CDH6.3.2 详细介绍及使用
    pynvml.nvml.NVMLError_FunctionNotFound: Function Not Found
    BGP选路规则
  • 原文地址:https://blog.csdn.net/weixin_41406486/article/details/127815463
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号