signal.freqz
时间: 2024-06-13 16:08:55 浏览: 8
`signal.freqz`是一个用于计算数字滤波器频率响应的函数,它可以帮助我们了解数字滤波器的频率特性。它的调用格式如下:
```python
w, h = signal.freqz(b, a, worN=None, whole=False, plot=None)
```
其中,`b`和`a`是数字滤波器的系数,`worN`是计算频率响应的点数或角频率数组,`whole`指定是否计算整个频率范围,`plot`指定是否绘制幅度响应图。
以下是一个使用`signal.freqz`函数计算数字滤波器频率响应的例子:
```python
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
# 设计一个低通Chebyshev II数字滤波器
N = 4 # 阶数
rs = 30 # 阻带衰减
fc = 0.2 # 截止频率
b, a = signal.cheby2(N, rs, fc, 'low', analog=False)
# 计算频率响应
w, h = signal.freqz(b, a)
# 绘制幅度响应图
fig, ax = plt.subplots()
ax.plot(w/np.pi, 20*np.log10(abs(h)))
ax.set(title='Chebyshev II Lowpass Filter Frequency Response',
xlabel='Normalized Frequency (x pi rad/sample)',
ylabel='Amplitude (dB)')
ax.axvline(fc, color='green') # 绘制截止频率垂直线
ax.grid()
plt.show()
```