2013-06-24 44 views
2

我想分析一個長週期序列的浮點數。我想對數字進行快速傅立葉變換,然後去掉低係數一個。有兩個問題:蟒蛇快速傅立葉係數濾波和閾值決定

1如何設定爲比閾值以下爲0這些噪聲係數efficients以有效的方式。 例如Arr = [100,2,50,4,15,7],閾值= 5,返回= [100,0,50,0,15,7]。我懷疑我應該使用拉姆達相關的伎倆,但我還是新手到Python

2是否有一個經驗法則來決定的門檻,球員經歷了FFT或信號處理,請幫助。

感謝

回答

1

你甚至不需要一個lambda關於第一個問題,而你可以使用列表內涵。

>>> print [n if n > 5 else 0 for n in [100, 2, 50, 4, 15, 7]] 

This question統計上可能提供確定的閾值的一些見解。

2

一個numpy的解決方案閾值會比列表理解或lambda表達式更快,更容易編寫和閱讀,你可能會使用numpy的爲FFT反正:

import numpy as np 
Arr=np.array([100, 2, 50, 4, 15, 7]) 

Arr[Arr<8] = 0 
# array([100, 0, 50, 0, 15, 0]) 

有也scipy.stats.threshold,但它只是基本上做了以上的事情。

關於門檻的問題,它完全取決於信號和噪聲的性質,所以有經驗的沒有好的規則。例如,如果你知道一部分樣本只是噪聲,那麼很明顯該做什麼;如果你不這樣做,而且你的信號與噪音完全相同,那麼你根本不應該達到閾值。這取決於細節。