使用可变噪声信号清理数据

Cleaning up Data with Variably Noisy Signal

我曾 运行 一项研究,根据我们收集信号的方式,我们在信号中意外地收到了不同数量的噪声。现在,我正在尝试学习如何过滤掉噪音,尽管我是相当新的信号处理/清洁。使用一种数据收集方法,我们得到的噪音要少得多,如下所示:

这些是在秤上进行的重量测量,其中被称重的物体被移除、操纵,然后重新称重,这会导致类似“阶梯”的模式。目的是在未来将此数据与变化检测算法一起使用,以识别重量变化的位置(即“阶梯”)以获得相当大的数据量,这使得通过肉眼无法做到这一点。我认为我需要的是一个低通滤波器,以消除信号非常高的那些非常短暂的情况。然而,通过另一种形式的收集,我们收到了更多的噪音:

我精通 python 和 R,但我只是不确定从哪里开始清理这些看起来完全不同的数据以及如何保存其完整性以供后续的变化检测分析。我想过简单地删除高和低权重值,但这会导致变化检测算法出现问题。感谢任何建议,我附上了示例数据。

https://docs.google.com/spreadsheets/d/1qLFmuP3CfU40MjV9-o2zos4ylTXzHcwo/edit?usp=sharing&ouid=100771405497110181259&rtpof=true&sd=true

您可以申请 median filter。 它将消除测量的毛刺和波动,并且只有一个参数需要调整,即 window.

的大小
from scipy.ndimage import median_filter
import matplotlib.pyplot as plt
plt.figure(figsize=(14, 4))
plt.plot(median_filter(x, 10), label='window=10')
plt.plot(median_filter(x, 100), label='window=100')
plt.legend()
plt.grid()