python中带通滤波
时间: 2023-11-20 15:57:20 浏览: 125
在LABVIEW中实现带通滤波
在Python中实现带通滤波可以使用`scipy`库中的`signal`模块。具体步骤如下:
1. 导入需要的库和模块:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
```
2. 编写带通滤波函数:
```python
def filter_bp(x, fs, wl, wh):
fN = 3
fc = fs / 2
w1c = wl / fc
w2c = wh / fc
b, a = signal.butter(fN, [w1c, w2c], 'bandpass')
x_filter = signal.filtfilt(b, a, x)
return x_filter
```
其中,`x`为原始信号,`fs`为采样频率,`wl`和`wh`分别为带通滤波的下限和上限。
3. 调用带通滤波函数:
```python
x = np.random.randn(1000) # 生成随机信号
fs = 1000 # 采样频率
wl = 10 # 带通滤波下限
wh = 100 # 带通滤波上限
x_filter = filter_bp(x, fs, wl, wh) # 进行带通滤波
```
4. 绘制原始信号和滤波后的信号:
```python
plt.figure(figsize=(10, 6))
plt.plot(x, label='Original Signal')
plt.plot(x_filter, label='Filtered Signal')
plt.legend()
plt.show()
```
阅读全文