带通butterworth滤波器应用代码
时间: 2023-07-09 07:04:31 浏览: 102
以下是一个简单的带通Butterworth滤波器的应用代码,使用了Python中的scipy库:
``` python
import numpy as np
import scipy.signal as signal
import matplotlib.pyplot as plt
# 生成测试信号
t = np.linspace(0, 1, 1000, False) # 1秒采样1000个点
sig = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t) + np.sin(2*np.pi*50*t)
# 设计Butterworth滤波器
fs = 1000 # 采样频率
lowcut = 15 # 低截止频率
highcut = 35 # 高截止频率
order = 4 # 滤波器阶数
nyq = fs/2 # 奈奎斯特频率
low = lowcut/nyq
high = highcut/nyq
b, a = signal.butter(order, [low, high], btype='band')
# 应用Butterworth滤波器
filtered_signal = signal.lfilter(b, a, sig)
# 绘制原始信号和滤波后信号的频谱图
plt.figure()
plt.magnitude_spectrum(sig, Fs=fs, color='blue')
plt.magnitude_spectrum(filtered_signal, Fs=fs, color='red')
plt.show()
# 绘制原始信号和滤波后信号的时域图
plt.figure()
plt.plot(t, sig, color='blue')
plt.plot(t, filtered_signal, color='red')
plt.show()
```
以上代码首先生成了一个测试信号,然后根据设定的低和高截止频率以及滤波器阶数,使用`signal.butter`函数设计了一个Butterworth带通滤波器,最后使用`signal.lfilter`函数应用滤波器,得到了滤波后的信号。最后,绘制了原始信号和滤波后信号的频谱图和时域图。
阅读全文