使用Scipy的巴特沃斯滤波器

时间:2017-10-11 21:27:13

标签: python filtering jupyter-notebook

我对scipy.signal.butter函数的以下参数有疑问。我正在使用python并在jupyter笔记本中运行它。

以下文档的链接:

https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.butter.html

我正在尝试实现低通n阶butterworth滤波器。我对参数Wn感到困惑。如果我的采样频率为1000Hz。我想切断250Hz以上的频率。根据我对文档的理解,Wn必须如下:

fs = 1000 * 2pi

fc = 250 * 2pi

Wn = fc /(fs / 2)

这是对的吗?我使用了上面的以下过程,我的回答似乎不准确。但我对输出没有任何期望,所以它可能是正确的。谢谢。

1 个答案:

答案 0 :(得分:1)

此方法中的截止频率由奈奎斯特频率归一化。 (信号中可解析的最高频率。)根据定义,奈奎斯特频率是信号采样率的一半。在你的情况下,那是500Hz。所以你应该Wn = 0.5来自:

cutoff = 250.0
Fs = 1000.0
Wn = cutoff / (Fs / 2.0)

我认为你对弧度的困惑来自于文档。这并不是说你需要以某种方式将频率转换为弧度。每个样本的奈奎斯特频率等于 pi弧度,并且每个样本的采样率等于 2 * pi弧度。这称为“每个样品的半周期”。请参阅Normalized frequency上的维基百科页面,其中包含更多信息。