2014-06-07 41 views
1

目前,我正在從ECG信號中消除50 Hz電源線干擾。在嘗試陷波濾波器之前,我決定嘗試一個截止頻率低於50赫茲的簡單低通濾波器。下面是我用來製作過濾器的MATLAB代碼:MATLAB濾波器不夠衰減

Fs=500; %Sampling rate in Hz 
Ast = 120; %Stopband attenuation 
Ap = 1; %Passband ripple 
Fp = 30; %Passband end 
Fst = 45; %Stopband beginning 
Hd=fdesign.lowpass('Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast,Fs); 
d=design(Hd,'butter'); % Design a butterworth filter with the given characteristics 
fvtool(d); 

濾波器的幅頻響應是: magnitude response of the filter

正如你所看到的,過濾器有大約180 dB的衰減在50赫茲甚至更高的頻率。

現在,我在我的數據上運行此過濾器。這裏的原始數據,在時域和頻域:

The original data

這裏應用過濾後的數據:

The filtered data

正如你可以看到,在50赫茲的衰減遠不及濾波器廣告的180 dB。爲了更好地看,這裏的幅度響應,採取了信號的FFT的比值來計算的情節:

The FFT ratio

顯然,衰減是隔靴搔癢它應該是正處級。這是應該的方式,還是我在執行中做錯了?

在此先感謝您的幫助!

回答

0

由於繪圖縮放很難說清楚,但看起來您的問題只是您估算PSD的方式。您使用的窗口功能可允許從高能頻率泄漏到相鄰頻率倉中: https://en.wikipedia.org/wiki/File:Window_functions_in_the_frequency_domain.png

Hann窗口是一個很好的默認選項(用於pwelch.m)。如果在同一圖上過濾前後繪製信號的輸出信號,則應該看到過濾操作。從維基百科圖可以看出,即使對於一個Hann窗口,您也必須使用至少10秒鐘的FFT窗口,才能在50 Hz處看到很多衰減。