从 FIR 滤波器系数 + 采样率得到频率响应曲线
信息处理
过滤器
过滤器设计
Python
有限脉冲响应
频率响应
2022-01-28 12:24:55
1个回答
正如评论所建议的,scipy.signal.freqz给出了解决方案。不要忘记使用它来进行 rad/sample 到 Hz 的转换。
这是一个现成的代码,张贴在这里以供将来参考:
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
sr = 44100
w, h = signal.freqz(b=[1, -1], a=1)
x = w * sr * 1.0 / (2 * np.pi)
y = 20 * np.log10(abs(h))
plt.figure(figsize=(10,5))
plt.semilogx(x, y)
plt.ylabel('Amplitude [dB]')
plt.xlabel('Frequency [Hz]')
plt.title('Frequency response')
plt.grid(which='both', linestyle='-', color='grey')
plt.xticks([20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000], ["20", "50", "100", "200", "500", "1K", "2K", "5K", "10K", "20K"])
plt.show()
使用对数 x 轴:
另一个带有梳状滤波器的例子(COEF = [1] + [0] * 200 + [-1], ie y[n] = x[n] - x[n-201]):
其它你可能感兴趣的问题


