切比雪夫三阶低通滤波器
时间: 2023-11-17 22:08:07 浏览: 234
滤波器的设计优化及Matlab实现
以下是切比雪夫三阶低通滤波器的Python代码实现:
```python
from scipy.signal import cheby2, filtfilt
import matplotlib.pyplot as plt
import numpy as np
# 设计滤波器
n = 3 # 阶数
Rs = 40 # 通带波动,单位为dB
fc = 1000 # 截止频率,单位为Hz
Wn = fc / (44100 / 2) # 归一化截止频率
b, a = cheby2(n, Rs, Wn, 'low', analog=False)
# 生成信号
t = np.linspace(0, 1, 44100, endpoint=False)
x = np.sin(2 * np.pi * 100 * t) + np.sin(2 * np.pi * 1000 * t) + np.sin(2 * np.pi * 5000 * t)
# 滤波
y = filtfilt(b, a, x)
# 绘图
plt.figure()
plt.plot(t, x, label='Original signal')
plt.plot(t, y, label='Filtered signal')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude')
plt.legend()
plt.show()
```
代码说明:
1. 首先导入了需要用到的库:`scipy.signal`用于滤波器设计和信号滤波,`matplotlib.pyplot`用于绘图,`numpy`用于生成信号。
2. 设计滤波器:使用`cheby2`函数设计切比雪夫滤波器,其中`n`为阶数,`Rs`为通带波动,`Wn`为归一化截止频率,`'low'`表示低通滤波器,`analog=False`表示数字滤波器。
3. 生成信号:使用`numpy`生成三个正弦波叠加的信号。
4. 滤波:使用`filtfilt`函数对信号进行滤波。
5. 绘图:使用`matplotlib.pyplot`绘制原始信号和滤波后的信号。
阅读全文