MATLAB实现EMD分解及希尔伯特谱分析

希尔伯特—黄变换

传统的傅里叶变化只能得到信号在采样周期内的全局频率信息,处理频率随时间变化的非平稳信号具有很大的局限性,希尔伯特-黄变换(Hilbert-Huang Trans form) 是由N. E. Huang 等人于1998年提出的一种非线性、非平稳信号的分析处理方法,可以求得信号的瞬时频率、瞬时幅值等瞬时特征。

原理

希尔伯特变换:

g ∧ ( t ) = 1 π P ∫ − ∞ + ∞ g ( τ ) t − τ d τ = P π t ∗ g ( t ) \mathop g\limits^ \wedge (t) = \frac{1}{\pi }P\int\limits_{ - \infty }^{ + \infty } {\frac{{g(\tau )}}{{t - \tau }}} d\tau = \frac{P}{{\pi t}} * g(t) g∧​(t)=π1​P−∞∫+∞​t−τg(τ)​dτ=πtP​∗g(t)

信号g(t) 的希尔伯特变换是原信号g(t) 与1/ π t \pi t πt) 在时域内的卷积。这个卷积在时域内很难理解;将它转换到频域中来看。时域中的卷积相当于频域中的相乘,因此,希尔伯特变换的结果是给原来的实信号提供一个幅值和频率不变,但相位平移90° 的信号。希尔伯特变换将原信号的延迟90°相位信号作为虚部,原信号作为实部,构成一个复数信号,从而在复数域求解信号的瞬时特征。如下图:

利用matlab自带的hht函数画“时间—频率—幅值图”(无背景色)

fs=500;
f1=15;
tmax=1;
N=tmax*fs;     %采样点数
t=0:1/fs:tmax-1/fs;
x=sin(t*2*pi*f1);
hht(x,fs,'FrequencyLimits',[0,50])   %画二维颜色图

自创函数画有背景色的“时间—频率—幅值图”

fs=500;
f1=15;
tmax=1;
N=tmax*fs;     %采样点数
t=0:1/fs:tmax-1/fs;
x=sin(t*2*pi*f1);
H_x=hilbert(x);         %希尔伯特变换
df=abs(diff(atan(imag(H_x)./x0))./(2*pi*diff(t)));   %差分求瞬时频率
E=abs(H_x);             %求瞬时幅值
tt=t(1:length(df));
df_c=fs/(10*N);
dtt_c=tmax/N;
%转换为可以画RGB图的矩阵
for i=1:Nfor j=1:N-1if((df_c*i)>df(j)&&(df_c*(i-1))<df(j))C(i,j)=E(j);endend
end
imagesc([0 tmax],[0 fs/10],C)         %画RGB图
xlabel('t');
ylabel('f');
title('hht')
colorbar

这里由于imagesc函数y轴的值是从上往下递增的,所以图像和hht画的图相反

EMD(经验模态分解)

瞬时频率对信号的约束条件,给人们一种启示:在对信号进行希尔伯特变换之前,要先把信号分解为瞬时频率具有意义的各个分量。把信号进行分解的方法在希尔伯特-黄变换理论中称为经验模式分解。在此方法中N. E. Huang 等人定义了一类函数,称为固有模式函数。利用这类函数的局部特性,可以使函数在任意一点的瞬时频率都有意义。经验模式分解的最大贡献是使信号符合了“单分量”的要求,进而使瞬时频率有了明确的物理意义,从而使得希尔伯特-黄变换比单纯的希尔伯特变换在时频分析方面有了很大地进步。

具体原理就不详述了,直接给出代码~

EMD分解后各阶IMF(固有模态分量)的“时间—频率—幅值图”

fs=500;
f1=15;
f2=10;
tmax=1;
N=tmax*fs;     %采样点数
t=0:1/fs:tmax-1/fs;
noise=wgn(1,N,2);
x=sin(t*2*pi*f1);%+sin(t*2*pi*f2);
y=x+noise;figure(1);
subplot(211);
plot(t,y);
title('Original Signal');
xlabel('Time');
ylabel('Amplitude');
%subplot(212);
%[fft_f,fft_a]=fftlw(t,y);
%plot(fft_f,fft_a);
%title('Original Signal');
%xlabel('F');
%ylabel('Amplitude');figure(2)
[imf,r]=emd(y);
imf=imf';
for i=1:3subplot(410+i)plot(t,imf(:,i))
end
subplot(414)
plot(t,r)x0=imf(:,3)';
H_x=hilbert(x0);
figure(3);
subplot(311);
plot(t,x0);
title('Original imf');
xlabel('t');
ylabel('imf');
subplot(312);
plot(t,imag(H_x));
xlabel('t');
ylabel('imag(imf)');
subplot(313);
plot(x0,imag(H_x));
xlabel('imf');
ylabel('imag(H_imf)');C=zeros(N,N);
for p=1:length(imf(1,:))x0=imf(:,p)';H_x=hilbert(x0);df=abs(diff(atan(imag(H_x)./x0))./(2*pi*diff(t)));%df=gradient(atan(imag(H_x')./x0))./(gradient(t)*2*pi);E=abs(H_x);tt=t(1:length(df));df_c=fs/(10*N);dtt_c=tmax/N;for i=1:Nfor j=1:N-1if((df_c*i)>df(j)&&(df_c*(i-1))<df(j))C(i,j)=E(j);endendend
endfigure(4)
imagesc([0 tmax],[0 fs/10],C)
xlabel('t');
ylabel('f');
title('hht')
% imagesc(tt,df,E)
colorbarfigure(5)
hht(imf,fs,'FrequencyLimits',[0 50])

经对比可以发现,自创函数做出的图(需要倒过来一下)与matlab自带的hht函数相比,matlab自带的hht函数做出的图较杂乱~

MATLAB实现EMD分解及希尔伯特谱分析相关推荐

  1. hilbert谱 matlab,MATLAB实现EMD分解及希尔伯特谱分析

    MATLAB实现EMD分解及希尔伯特谱分析 希尔伯特-黄变换 传统的傅里叶变化只能得到信号在采样周期内的全局频率信息,处理频率随时间变化的非平稳信号具有很大的局限性,希尔伯特-黄变换(Hilbert- ...

  2. java emd,MATLAB实现EMD分解及希尔伯特谱分析

    MATLAB实现EMD分解及希尔伯特谱分析 希尔伯特-黄变换 传统的傅里叶变化只能得到信号在采样周期内的全局频率信息,处理频率随时间变化的非平稳信号具有很大的局限性,希尔伯特-黄变换(Hilbert- ...

  3. 简述EMD分解、希尔伯特变换、谱方法

    只对EMD分解,希尔伯特变换以及一些谱方法的功能做简述,意在告知你输入一个什么信号,可以得到什么结果,本人不是信号处理的,只是拿来用这些方法,对原理也不了解. 目录 1.EMD分解 2.希尔伯特-黄变 ...

  4. 经验模式分解(EMD)及希尔伯特-黄变换(HHT)简介及matlab实现

    本文介绍过程涉及到两个链接工具包,可以自己网上搜索下载,以下提供了网盘下载的地址,因为作者主要做语音方面工作,所以后面的说明主要以说话人识别为例.(链接:https://pan.baidu.com/s ...

  5. 时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络)

    时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络) 目录 时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM ...

  6. 使用MATLAB实现对信号的EMD分解

    文章目录 0 前言 1 经验模式分解EMD 2 希尔伯特变换HT 3 希尔伯特-黄变换HHT 4 基于EMD的语音信号处理 5 MATLAB实现对信号的EMD分解 5.1 对构造的信号进行EMD 5. ...

  7. matlab怎么求imf图,MATLAB中提取EMD分解后的每个IMF图像,并导出每个IMF数据

    题目: MATLAB中提取EMD分解后的每个IMF图像,并导出每个IMF数据 EMD分解程序我就不给了,网上都是一样的. 例: M = length(imf); N = length(x); c = ...

  8. 克劳特法matlab,经验模式分解matlab

    EMD分解的matlab程序 %此版本为 ALAN 版本的整合注释版 function imf = emd(x...(x1) %当标准偏差系数 sd 大于 0.1 或 x1 不是固有模态函数时,分量终 ...

  9. 量化择时:基于经验模态分解的希尔伯特-黄变换(二)算法

    量化择时:基于经验模态分解的希尔伯特-黄变换 part2部分是算法的介绍,抛开代码部分,其实就是所有人都能看得懂字面解释 Part2算法 在了解了基础的数理知识和学习了将实信号转换为复信号的处理方法之 ...

最新文章

  1. linux删除过期文件
  2. 【LeetCode从零单排】No.169 Majority Element(hashmap用法)
  3. 2018ICPC南京赛区网络选拔B The writing on the wall (单调栈)
  4. cocos2dx标准容器_cocos2dx 容器Layout
  5. uva 11992 Fast Matrix Operations
  6. Emacs-24.2 中很重要的几个函数--实现自定义语法高亮的关键
  7. 清华大学深圳研究生院自动化系九推,2018/9
  8. 软考程序员2017下半年真题含答案解析
  9. SATA硬盘在安装OS时注意AHCI模式
  10. 将数组分为两部分,使得这两部分和最接近,返回这两部分的差值
  11. 【架构干货】京东是如何抗住今年春晚百亿次互动的?
  12. 股票什么时候买入什么时候卖出适合?
  13. 企业微信管理客户如何管理?
  14. java本科研究生待遇_本科生VS研究生薪资对比!差别这么大?
  15. 淘宝网页显示不正常,其它网站正常显示---解决办法
  16. LRU(least recently used)算法浅析
  17. Mac软件爆品返场 优惠依旧给力
  18. 动态数据库PI、edna insql、infoplus简单了解
  19. 智能网联汽车预期功能安全:挑战、现状及趋势 演讲PPT截屏
  20. mysql数据库麦如何修复_非常规方法,轻松应对Oracle数据库危急异常

热门文章

  1. Unity资源--几种卡通动物的模型+动画
  2. win7 网络打印机 未授予用户在此计算机上的请求登录类型,Win7共享打印机登录失败:未授予用户在此计算机上的请求登陆类型 解决方法...
  3. Everything about PBD:关于PBD的一切!
  4. HTML打造动漫人物,MAYA打造逼真人物表情教程系列4-角色控制面板
  5. 软件测试面试怎样介绍自己的项目?会问到什么程度?
  6. baby_web、Training-WWW-Robots、ics-06
  7. 放弃价格战开启流量战?电信移动竞争再升级,网友:让利才能得民心
  8. mysql的功能是什么_数据库的作用是什么
  9. mysql数据库层级关系图_层次关系数据库表的设计
  10. 新起点共奋进 新征程再出发 浙江省家用电器流通协会十届一次大会顺利举行