scipy中的带通巴特沃斯滤波器频率

我正在按照食谱设计scipy带通滤波器但是,如果我过多地降低了过滤频率,我最终会在高阶过滤器上产生垃圾。我究竟做错了什么?

from scipy.signal import butter, lfilter

def butter_bandpass(lowcut, highcut, fs, order=5):
    nyq = 0.5 * fs
    low = lowcut / nyq
    high = highcut / nyq
    b, a = butter(order, [low, high], btype='band')
    return b, a

if __name__ == "__main__":
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.signal import freqz  
    # Sample rate and desired cutoff frequencies (in Hz).
    fs = 25
    # Plot the frequency response for a few different orders.
    plt.figure(1)
    plt.clf()
    for order in [1, 3, 5, 6, 9]:
        b, a = butter_bandpass(0.5, 4, fs, order=order)
        w, h = freqz(b, a, worN=2000)#np.logspace(-4, 3, 2000))
        plt.semilogx((fs * 0.5 / np.pi) * w, abs(h), label="order = %d" % order)  
    plt.xlabel('Frequency (Hz)')
    plt.ylabel('Gain')
    plt.grid(True)
    plt.legend(loc='best')

    plt.figure(2)
    plt.clf()
    for order in [1, 3, 5, 6, 9]:
        b, a = butter_bandpass(0.05, 0.4, fs, order=order)
        w, h = freqz(b, a, worN=2000)#np.logspace(-4, 3, 2000))
        plt.semilogx((fs * 0.5 / np.pi) * w, abs(h), label="order = %d" % order)  
    plt.xlabel('Frequency (Hz)')
    plt.ylabel('Gain')
    plt.grid(True)
    plt.legend(loc='best')

    plt.show()

fs = 25,低= 0.5,高= 4 fs = 25,低= 0.05,高= 0.4

更新:已经讨论了该问题,显然已在Scipy 0.14上解决了该问题。但是,在Scipy更新之后,该图看起来仍然非常糟糕。怎么了?

在Scipy 0.14之后,甚至更糟

显然,该问题是一个已知的错误:

Github

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在MATLAB中对图像进行高通巴特沃斯滤波器

来自分类Dev

如何使用Matlab绘制巴特沃斯滤波器的频率响应

来自分类Dev

带通FIR滤波器

来自分类Dev

C/C++ 中的巴特沃斯 BP 滤波,奇怪的频谱

来自分类Dev

信号。黄油带通错误:数字滤波器的临界频率必须为0 <Wn <1

来自分类Dev

Python中的低通然后逆滤波器

来自分类Dev

低通滤波器和采样频率

来自分类Dev

Web音频滤波器降低增益而不是滤波频率

来自分类Dev

带滤波器的模式匹配

来自分类Dev

带firpm的滤波器系数

来自分类Dev

设计带阻滤波器(在 SciPy firwin)

来自分类Dev

Matlab中的傅立叶变换和LTI滤波器以及频率响应

来自分类Dev

如何在MATLAB中绘制数字滤波器的频率响应?

来自分类Dev

带通滤波器无法在Matlab中过滤不想要的频率

来自分类Dev

如何在MATLAB中绘制数字滤波器的频率响应?

来自分类Dev

使用`scipy.signal.butter()`创建低通滤波器时,“阶次”和“临界频率”是什么

来自分类Dev

20hz-20000hz巴特沃思滤波爆炸

来自分类Dev

查找带通滤波器的频率响应

来自分类Dev

在SciPy中创建低通滤波器-了解方法和单位

来自分类Dev

如何在scipy.signal中制作一个低通滤波器?

来自分类Dev

C中的FIR滤波器?

来自分类Dev

C中的定点FIR滤波器?

来自分类Dev

python中的fft带通滤波器

来自分类Dev

C ++中的FIR滤波器

来自分类Dev

在MATLAB中实现均值滤波器

来自分类Dev

dplyr滤波器中的标量比较

来自分类Dev

Python中的带通滤波器形状

来自分类Dev

OpenCL中的低通滤波器

来自分类Dev

R中的输入滤波器