带通滤波器不考虑截止

时间:2013-05-03 09:09:19

标签: python numpy scipy signal-processing

我在python中使用这个过滤器:

def bandpass_firwin(ntaps, lowcut, highcut, fs, window='hamming'):
    nyq = 0.5 * fs
    taps = firwin(ntaps, [lowcut, highcut], nyq=nyq, pass_zero=False,
                  window=window, scale=False)

我的ntaps = 128; lowcut = 0.7; highcut = 4; fs = 61

我过滤我的信号,其中有61个样本以61 Hz采样(所以它是10秒长)。

当我查看已通过此带通滤波器滤波的信号频谱时,我看到了:

enter image description here

此频谱的亮度为0.61 Hz。不在0.7至4 Hz的范围内。

这怎么可能? &安培;我该如何预防?

1 个答案:

答案 0 :(得分:0)

您的过滤器并不神奇 - 带宽存在内在限制。如果你真的需要紧密切断,请尝试使用更多的水龙头。

您使用的抽头越多,您就越需要考虑边缘效应以及如何处理它们(因为边缘假设会进一步侵入数据块)。也许你想在边缘顺利滚动?还是镜像和重复数据?也许你可以完全忽略它......

卷积的另一种技术是通过简单地乘以所需的频谱直接在频域中滤波。这会强制重复您的信号的边缘假设,尽管您可以通过扩展您认为合适的信号来改变这一点。如果你想知道等效FIR滤波器的支持,请选择窗口的IFFT,你可以看到时间块的开头会在开始时涂抹多少。