附图是带有3轴的加速度计数据图。情节中的突然颠簸是噪音。我想摆脱它们。那么在这种情况下应该使用什么过滤器?如果有可能为它提供一些伪代码和解释。
答案 0 :(得分:2)
看起来你只想要一个低通滤波器。
答案 1 :(得分:2)
对于测量数据,您可以在其中建立物理上正在进行的模型,或物理上可能的模型,我建议使用Kalman filter。它比其他方法更复杂,但可能提供更清晰的输出和/或更好的响应性。
答案 2 :(得分:1)
查看数据,你不希望任何偷看在一定时间内改变一定数量的值(大约200,让我们称之为max_y_delta
)(也许是5-15,{{1} })。
因为我不确定您的数据具有哪种结构,所以我假设它是3个浮点值数组max_x_delta
,每个整数位置都有一个数据点。我提出的解决方案应尽可能简单,您应该尝试data_array
的不同值以获得良好的结果。即使有正确的价值观,我也相信有更好的解决方案,但也许这个对你来说已经足够好了。
max_x/y_delta
请注意,此代码有两个您可能不需要的缺点:
max_x_delta = 10
max_y_delta = 200
for each of the 3 arrays
for x = -1000...1000
points_above_delta = 0
average_value = 0
for deltax = -max_x_delta/2...max_x_delta/2
average_value += data_array[deltax]
if abs(data_array[deltax] - data_array[x]) > max_y_delta
points_above_delta++
endif
end for deltax
average_value = average_value / max_x_delta
if points_above_delta > max_x_delta/4
for deltax = -max_x_delta/2...max_x_delta/2
data_array[deltax] = average_value
end for deltax
end if
end for x
区域中的每个值都会设置为该区域中的平均值,这将给您一条直线。答案 3 :(得分:1)
答案 4 :(得分:0)
尝试中值滤波器:http://en.wikipedia.org/wiki/Median_filter,它可以去除峰值,但不能去除边缘
答案 5 :(得分:0)
中值滤波器用于去除二维数据中的椒盐噪声。在这个您想要去除的峰的一维数据中,高强度点类似于2D中的盐和胡椒。我会推荐一个中值滤波器,它将有助于摆脱这些尖峰并且几乎没有变化。唯一的缺点是它是一个非线性滤波器。只要您仔细更新社区,就应该高效实施。