怎么用设计一个滑动均值滤波器啊,要求每从屏幕上输入1个float型数据后,滤波器计算出对应的结果
时间: 2024-10-25 19:14:39 浏览: 10
设计一个滑动均值滤波器通常用于平滑数据序列,通过连续添加新数据并丢弃最早的数据来减少噪声的影响。这里是一个简单的Python实现,假设我们有一个窗口大小(例如5),每次接收到新的浮点数`new_data`:
```python
class SlidingAverageFilter:
def __init__(self, window_size):
self.window = [0] * window_size
self.index = 0
self.total = 0
self.window_size = window_size
def add_data(self, new_data):
if self.index == self.window_size - 1:
# 如果已满,先移除最旧的数据
old_data = self.window[0]
self.window[0] = new_data
# 更新总和
self.total -= old_data
else:
# 如果还有空间,直接添加新数据
self.window[self.index] = new_data
self.index += 1
# 计算平均值
self.total += new_data
self.filtered_value = self.total / self.window_size
@property
def result(self):
return self.filtered_value
# 使用示例
filter = SlidingAverageFilter(5)
while True:
new_data = float(input("请输入一个新的浮点数:"))
filter.add_data(new_data)
print(f"当前滤波后的结果是:{filter.result}")
```
在这个例子中,每次输入新数据,`add_data`方法会更新窗口中的数据,如果窗口已满则会移除最旧的数据,然后计算新的平均值。
阅读全文