python - 随着阶数的增加,巴特沃斯滤波器看起来很奇怪
问题描述
我正在尝试在 SciPy 中设计一个简单的 Butterworth 带通滤波器,但遇到了一些奇怪的结果。
import scipy.signal as signal
import numpy as np
import matplotlib.pyplot as plt
def butter_bandpass(lowcut, highcut, fs, freqs,order=3, label=None):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
sos = signal.butter(order, [low, high], btype='band', output='sos')
w, h = signal.sosfreqz(sos,worN=freqs,whole=True,fs=fs)
return w,h
freqs = 650
for i in np.arange(1,10):
w,h = butter_bandpass(0.01, 0.1, fs=1/0.68, freqs=freqs, order=i)
plt.plot(h)
这给出了奇怪的结果,如下图所示(巴特沃斯滤波器从 1-10 阶)。我认为随着订单的增加,过滤器应该变得越来越矩形?
有谁知道如何在 SciPy 中设计一个简单的巴特沃斯滤波器?
解决方案
推荐阅读
- visual-studio-code - 无法远程 SSH 到 VSCode 上的 Windows 主机
- stream - 如何使用流但仍保留数据而不偏移
- python - 使用 pandas 的 lambda 函数的语法错误
- java - 内容协商。请求、响应支持 JSON 和 XML
- r - {rlang} 的'curly-curly' 操作符 `{{` 是如何实现的?
- batch-file - 通过批处理文件和 VBScript 压缩文件夹
- javascript - 如何在 1 个按钮中添加多个 id
- swift - Swift 5 – 如何在可能有肤色表情符号作为输入的 case 语句中使用基本表情符号?
- android - 尝试安装 Android Studio,我不能,因为它说我的用户有非 SCII 字符
- android - 约束布局如何在视图为多行时摆脱 textview 上的额外空间