這是我在新浪微博上看到的,爲了便於自己記錄,轉載了
博主最近在研究EMD分解,現舉例簡要說明EMD函數的使用
t=1:500;
t=t*1/2000;
x=sin(2*pi*20*t);
y=0.4*sin(2*pi*40*t+140);
z=x+y;
plot(t,z) %畫出原始的信號
imf=emd(z);%調用EMD工具箱中的emd函數,運行結果如下
%Imf有5行,意味着原始信號被分解成了4個IMF(本徵模函數Intrinsic Mode Function)和一個餘波(殘差residual)
emd_visu(z,1:length(z),imf) %調用EMD工具箱中的emd_visu函數,運行結果如下:
從第一張圖我們可以看到,IMF1到IMF4再加上residual就是原始信號。
而f2c和c2f分別從2個相反的方向重構原始信號(f2c1就是IMF1,而f2c2是IMF1和IMF2合成的,f2c3是IMF1,IMF2,IMF3合成的;而c2f1就是IMF4,其餘依次類推,注意IMF3和IMF4不是直線,而是曲線,由於一張圖裏要畫好幾個分圖故圖像被壓縮了,看起來像直線)
仔細觀察各imf分量,我們可以發現imf1和imf2其實就是對應於原始信號中的y和x,而其他的imf的振幅非常小,可以看做是EMD分解的誤差。
PS.EMD分解在實際應用中是需要檢驗的,NASA的ZHAOHUA WU和黃先生寫了一篇論文A Study of the Characteristics of White Noise Using the Empirical Mode Decompostion Method來介紹如何檢驗,他們也寫好了matlab程序,大家可以去臺灣中央大學數據分析中心下載http://rcada.ncu.edu.tw/research1.htm。