这两天在学习希尔伯特黄变换,也就是HHT,趁着学习的劲赶紧整理整理,用的是MATLAB进行编程,所用到的工具箱便是EMD工具箱,链接如下,请自行下载。
首先先介绍下matlab中经验模态分解所用到的函数emd。
imf = emd(x)
imf = emd(x,...,'option_name',option_value,...)
imf = emd(x,opts)
[imf,ort,nb_iterations] = emd(...)
做仿真的时候只是简单的对信号做一个模态分解,因此只用到了第一种方法,imf=emd(x),这其中若x为实向量,则计算经验模态,若x为复向量,则计算二维经验模式。对于x为实向量的情况下,得到的是1-n个imf(内部模态函数),在加上一个剩余项。
在得到IMF后,可以直接作图,也可以利用工具箱中的函数emd_visu作图,可以得到模态分解结果以及两种方向相反的重构信号过程,该函数的用法为
emd_visu(x,t,imf)
其中,x为原信号,t为时间序列,imf为上一步得到的结果,该函数可得三个图,第一个为emd图,后两个为信号重构过程,分别为f2c、c2f。
clear;close all;clc
N=1024;
f