python三角带通滤波器
时间: 2023-07-07 14:36:30 浏览: 231
python实现低通滤波器代码
4星 · 用户满意度95%
在Python中,可以使用SciPy库中的signal模块进行三角带通滤波器的设计和滤波。以下是一个示例代码:
```python
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
# 生成信号
t = np.linspace(0, 1, 1000)
signal = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t)
# 设计三角带通滤波器
f1, f2 = 3, 7 # 通带边缘频率
Wn = [f1 / (2 * np.pi), f2 / (2 * np.pi)] # 归一化频率
N = 5 # 滤波器阶数
b, a = signal.butter(N, Wn, btype='band', analog=False)
w, h = signal.freqz(b, a) # 计算频率响应
# 绘制滤波器频率响应曲线
fig, ax = plt.subplots()
ax.plot(w / np.pi * 0.5, np.abs(h), 'b')
ax.set_xlabel('Frequency [Hz]')
ax.set_ylabel('Amplitude')
ax.set_title('Bandpass Filter')
ax.grid()
plt.show()
# 对信号进行滤波
filtered_signal = signal.filtfilt(b, a, signal)
# 绘制原始信号和滤波后的信号
fig, ax = plt.subplots()
ax.plot(t, signal, label='Original Signal')
ax.plot(t, filtered_signal, label='Filtered Signal')
ax.set_xlabel('Time [s]')
ax.set_ylabel('Amplitude')
ax.set_title('Signal Filtering')
ax.legend()
ax.grid()
plt.show()
```
该代码生成了一个包含两个正弦波的信号,并设计了一个三角带通滤波器,最后对信号进行滤波并绘制了原始信号和滤波后的信号。
阅读全文