2013-06-24 45 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,但它只是基本上做了以上的事情。

关于门槛的问题,它完全取决于信号和噪声的性质,所以有经验的没有好的规则。例如,如果你知道一部分样本只是噪声,那么很明显该做什么;如果你不这样做,而且你的信号与噪音完全相同,那么你根本不应该达到阈值。这取决于细节。