首先先介紹下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;
fs=1024;
t=(0:n-1)/fs;
f1=70;f2=120;
x=cos(2*pi*f1*t)+2*cos(2*pi*f2*t);
imf=emd(x); %經驗模態分解
emd_visu(x,t,imf) %作圖
所得結果如下
第乙個圖所表示便是emd的過程了,7個imf加乙個剩餘項rn,後兩張圖就是原訊號的重構過程了,我們知道在hht中,有這麼乙個關係,
在emd結束後,便可以開始畫hht譜圖了,此處我結合這兩天檢視的資料,給出兩個所用到的函式用法的簡單表述,如下:
[a,f,t] = hhspectrum(imf)
用於計算hht譜,imf為前面所得結果,a為每個imf的瞬時振幅,f、tt分別為對應的瞬時頻率和時間序列。
[im,tt,ff] = toimage(a,f,t,splx,sply)
其中a,f,t與hhspecturm函式的相關定義一致,splx、sply則分別對應輸出im的列數和行數,splx一般與t的長度一致;
im為頻譜的二維影象,tt為時間序列號(此處劃重點,是「序列號」,而不是「序列」,也就是需要除以總長度得到時間序列),ff的注釋解釋為 「centers of the frequency bins」(頻率門的中心值?)。
下面直接給出程式和結果。
[a,f,tt] = hhspectrum(imf(1:end-1,:));
[im,tt,ff] = toimage(a,f,tt,length(tt));
figure;
set(gcf,'color','w');
imagesc(tt/n,[0,0.5*fs],im);
set(gca,'ydir','normal')
colormap('jet');colorbar;
xlabel('時間(s)');
ylabel('頻率(hz)');
axis([0 1 0 200]);title('hht譜') ;
本文參考自
希爾伯特變換 希爾伯特變換
希爾伯特變換 ht 是指描述乙個以實數值載波做調製的訊號之複數包絡,相移是通過希爾伯特變換器來實現的,訊號經希爾伯特變換後在頻域各頻率分量的幅度保持不變,但相位出現90度相移,正頻率之後90度負頻率超前90度,希爾伯特變換器又成為90度相位器。用希爾伯特變換描述幅值調值或相位調值的包絡,瞬時頻率和瞬...
訊號處理 希爾伯特黃變換
特點 最近在做訊號處理,發現自己基本功不夠紮實,開始了惡補之路,希望能夠盡快的補齊吧。希爾伯特黃變換 1998年,norden e.huang 黃鍔 中國台灣海洋學家 等人提出了經驗模態分解方法,並引入了hilbert譜的概念和hilbert譜分析的方法,美國國家航空和宇航局 nasa 將這一方法命...
離散希爾伯特變換
一般情況下,我們需要有關幅度和相位 或實部和虛部 在 pi,pi 上的全部資訊才能完整描述乙個序列的傅利葉變換特性 但在特定情況下,有可能不需要這些全部的資訊。1.因果實序列 因果實序列可以從它的偶對稱分量 x n x n 2 恢復出來 而偶對稱序列的傅利葉變換只有實數分量。因此,因果實序列只需要其...