如何在Python中应用时域信号滤波器

时间:2016-11-24 10:05:39

标签: python signal-processing fft

我在频域中有一个信号,我傅里叶变换到时域。现在,有一个主峰和几个边带。我想过滤掉时域响应中的特定峰值。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您需要 矩形窗口(一般的时间限制窗口)。 scipy有一个信号处理模块scipy.signal,它可以帮助您完成许多此类操作。

在这种情况下,您可以使用scipy.signal.boxcar创建矩形窗口。或者,您可以尝试scipy.signal.get_window的不同窗口。在此之后,您可以将信号乘以此窗口以获得最终结果。

以下是示例代码

import numpy as np
import scipy.signal
# signal
input = np.random.rand(100)
window = scipy.signal.boxcar(10)
# Pad the window to make its size equal to signal size
# I'm assuming your peak is between sample 45 and 55
window = np.lib.pad(window, (45, 45), 'constant')
output = input*window

如果您希望在频域中执行此操作,则需要通过适当的低通滤波器传递信号。 (假设您的峰值在频域中)。这是一个非常详细的答案,可以帮助您通过 Butterworth过滤器 - Creating lowpass filter in SciPy - understanding methods and units来实现这一目标。