Python中的信号分析 - 去除曲线中的异常值
我有一个信号需要处理(原始数据):
我想处理这个信号,去掉一些异常值,以获得一条“平滑”的曲线。注意:我不想改变任何实际的数值,我只是想去掉那些不正常的点。 一个具体的要求是,这条曲线要“首尾相连”(也就是说,曲线的开头应该和结尾是连着的)。我觉得用图片来说明可能更清楚(我手动画了黑线来示意):
到目前为止,我尝试过根据移动平均值的距离来设定阈值,但效果很差。我也试过计算一阶导数并根据它来设定阈值,但也没有帮助。有没有什么想法可以让我达到想要的结果?我觉得这里一定有一个相对简单的解决方案我没有想到。我正在使用Python/NumPy/SciPy。
1 个回答
6
使用SciPy中的滚动中位数滤波器:< http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.ndimage.filters.median_filter.html >。
你也可以使用其他类型的滚动平均或滚动排序统计滤波器。