2012-07-11 102 views
0

對不起,可能是微不足道的問題,但我是信號處理新手,我沒有找到很好解釋的Python代碼。所以我會很高興得到虛擬的解釋:)如何在Python中編寫採樣信號的低通濾波器?

我有一些信號,每1納秒(1e-9秒)採樣,並且有,比方說,1e4點。 我需要從這個信號過濾高頻率。假設我需要過濾高於10MHz的頻率。 我希望對於頻率低於截止頻率的信號將通過不變。這意味着對於低於截止頻率的頻率,濾波器的增益將爲1。 我希望能夠指定過濾器順序。我的意思是,階數濾波器在截止頻率之後有20db/decade的斜率(功率滾降),二階濾波器在截止頻率之後有40db/dec的斜率等等。 代碼的高性能是重要的。

非常感謝您的幫助。 Alex。

+0

[你有什麼試過?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2012-07-11 08:21:47

+0

我試了這個http://azitech.wordpress.com/2011/03/15/design-a-butterworth-scipy低通濾波器/ – Alex 2012-07-11 08:25:27

回答

9

你似乎有兩個問題:

  1. 如何設計一個10MHz的截止頻率和任意濾波器階低通濾波器?
  2. 如何在Python中實現該過濾器?

濾波器設計超出了Stack Overflow的範圍 - 這是一個DSP問題,而不是編程問題。濾波器設計由任何DSP教科書覆蓋 - 轉至您的圖書館。我喜歡Proakis和Manolakis'數字信號處理。 (Ifeachor和傑維斯數字信號處理也不錯。)

如果你必須有德coeds,嘗試this blog post,它展示瞭如何設計一個巴特沃斯低通濾波器與scipy

至於在Python中實現過濾器,scipy有一個lfilter() function,它將FIR或IIR濾波器應用於一維信號。

+2

另請參閱http://dsp.stackexchange.com以瞭解DSP /濾波器設計問題的部分內容。 – 2012-07-11 09:01:30