请帮我用python写一个可以实现中位值滤波器功能的代码,并且使用matplotlib库做滤波后的图线展示。
时间: 2024-03-10 08:44:57 浏览: 19
好的,下面是一个简单的中位值滤波器的Python代码,使用了numpy和matplotlib库:
```python
import numpy as np
import matplotlib.pyplot as plt
def median_filter(data, filter_size):
# 为了方便,我们假设滤波器大小是奇数
padding = (filter_size - 1) // 2
filtered_data = np.zeros_like(data)
for i in range(padding, len(data) - padding):
filtered_data[i] = np.median(data[i-padding:i+padding+1])
return filtered_data
# 测试
data = np.random.normal(0, 1, 100) # 生成随机数据
filtered_data = median_filter(data, 5) # 中位值滤波器
plt.plot(data, label='Raw Data')
plt.plot(filtered_data, label='Filtered Data')
plt.legend()
plt.show()
```
代码中的median_filter函数实现了中位值滤波器的功能,它接受两个参数:data和filter_size,其中data是待滤波的原始数据,filter_size是滤波器的大小。代码中使用了numpy中的median函数来计算中位数。
测试部分生成了100个随机数据,并使用中位值滤波器对其进行了滤波。最后使用matplotlib库展示了原始数据和滤波后的数据的折线图。