带阻滤波器python
时间: 2023-09-19 16:12:29 浏览: 284
在Python中实现带阻滤波器可以使用SciPy库中的signal模块。下面是一个示例代码:
```python
import numpy as np
from scipy import signal
# 指定滤波器参数
fs = 1000 # 采样频率
f1 = 50 # 低截止频率
f2 = 150 # 高截止频率
# 计算滤波器系数
b, a = signal.iirfilter(10, [f1, f2], rs=60, btype='bandstop', fs=fs)
# 生成输入信号
t = np.arange(0, 1, 1/fs)
x = np.sin(2*np.pi*100*t) + np.sin(2*np.pi*200*t) + np.sin(2*np.pi*300*t)
# 应用滤波器
filtered_signal = signal.lfilter(b, a, x)
# 绘制结果
import matplotlib.pyplot as plt
plt.figure()
plt.plot(t, x, label='原始信号')
plt.plot(t, filtered_signal, label='滤波后信号')
plt.xlabel('时间')
plt.ylabel('幅值')
plt.legend()
plt.show()
```
这段代码使用了SciPy库中的`iirfilter`函数来设计无限冲激响应(IIR)滤波器,并使用`lfilter`函数将滤波器应用到输入信号上。在示例中,我们生成了一个包含100、200和300 Hz正弦波的合成信号,然后使用带阻滤波器滤除位于50和150 Hz之间的频率成分。最后,使用Matplotlib库绘制原始信号和滤波后的信号。
阅读全文