请帮我用python写一个可以实现递推平均滤波器功能的代码,并且使用matplotlib库做滤波后的图线展示。
时间: 2024-03-10 16:45:07 浏览: 105
当然可以,以下是一个简单的实现:
```python
import numpy as np
import matplotlib.pyplot as plt
def average_filter(data, window_size):
"""递推平均滤波器"""
filtered_data = np.zeros_like(data)
filtered_data[0] = data[0]
for i in range(1, len(data)):
if i < window_size:
filtered_data[i] = np.mean(data[:i+1])
else:
filtered_data[i] = filtered_data[i-1] + (data[i] - data[i-window_size])/window_size
return filtered_data
# 生成随机数据
data = np.random.randn(1000)
# 对数据进行递推平均滤波
window_size = 10
filtered_data = average_filter(data, window_size)
# 绘制原始数据和滤波后的数据
plt.plot(data, label="original data")
plt.plot(filtered_data, label="filtered data")
plt.legend()
plt.show()
```
上述代码中,我们首先定义了一个`average_filter`函数实现递推平均滤波器的功能。然后生成了一组随机数据,使用`average_filter`函数对其进行滤波处理,并使用`matplotlib`库展示了滤波后的数据和原始数据的图线。
阅读全文