2013-03-07 94 views
0

我有真正的麻煩試圖創建/使用MATLAB中的過濾器是在非常低的頻率足夠準確的高通濾波器。低頻率,MATLAB

我感興趣的一個範圍內的5和50赫茲之間的信號,高頻段沒有太多關注的,我真正想要做的是過濾5HZ下任何東西。但是,我發現巴特沃斯濾波器在濾波方面做得很少,只是將信號衰減到正常信號的一半左右。

我已經試過兩種方法。一個是使用MATLABs過濾工具fdatool,另一個是下面的手動方法:

filtLow = 5; 
filtHigh = 50; 
Fs = 1000; 
[b, a] = butter(1, filtLow/(Fs/2), 'high'); 
y = filtfilt(b, a, data); 

[b, a] = butter(1, [filtLow/(Fs/2), filtHigh/(Fs/2)]); 
y = filtfilt(b, a, data); 

誰能給我一個建議或代碼可以給我更好的結果?

+0

你是如何設計你的巴特沃斯過濾器的?你可以發佈一些代碼嗎? – 2013-03-07 17:28:29

+0

我試過兩種方法。其中之一是使用MATLABs濾波器工具(的FDATool),另一個是下方的手動方法: 'filtLow = 5; filtHigh = 50; Fs = 1000; [b,a] = butter(1,filtLow /(Fs/2),'high'); y = filtfilt(b,a,data); OR 並[b,A] =黃油(1,[filtLow /(FS/2),filtHigh /(FS/2)]); y = filtfilt(b,a,data);' – ritchie888 2013-03-07 17:48:11

+0

將來,請在問題中張貼代碼並正確格式化。 – 2013-03-07 17:51:00

回答

1

如果你想在5-50HZ範圍內,沒有別的信號,你的過濾器的順序可能會被清盤相當高。此外,巴特沃斯濾波器雖然線性相位和通帶中的平坦頻率響應不具有從通帶到抑制的最佳滾降。如果你可以承受一點失真,橢圓或貝塞爾濾波器會使你的滾降更緊密。另外,如果使用5 Hz作爲截止頻率,理論上它應該是-3 dB點,這就是爲什麼你看到1/2的衰減。你需要考慮一些規格。

  1. 我可以在通帶中接受的最低頻率是多少?
  2. 我可以在通帶中接受的最高頻率是多少?

您認爲這是爲了確定所需的可實現的衰減。現在,它看起來好像你想在單一頻率上進行無限衰減。不幸的是,您需要確定設計的頻率範圍內的衰減是可以接受的。

我想我的手在高通部分和下面上來:

Fs = 1000; 
BW = Fs/2; 
% get the recommended order and cutoff for high pass 
[n,Wc] = buttord(10/BW,5/BW,3,10); 
% get the butterworth filter 
[b,a] = butter(n,Wc); 
% get the frequency response 
[H,W] = freqz(b,a); 
% plot the low end of the response 
plot(BW*W(1:10)/pi, 20*log10(abs(H(1:10)))) 

給我 - >

Frequency Response

這似乎相當合理。

+0

感謝您的迴應。我能接受的最低頻率約爲10Hz,5Hz是我的阻帶。更高的頻率現在不是什麼大問題,所以我正試圖專注於高通濾波器,我可以在未來適應帶通。 – ritchie888 2013-03-07 18:16:50