小编典典

如何“平滑”数据并计算线梯度?

algorithm

我正在从测量距离的设备读取数据。我的采样率很高,因此我可以测量距离(即速度)的大变化,但是这意味着,当速度低时,设备会进行许多相同的测量(由于设备的粒度)。这导致“阶梯式”曲线。

我需要做的是平滑曲线以计算速度。接下来,我需要计算加速度。

如何最好地做到这一点?

(采样率最高为1000Hz,计算速率为10Hz即可。在VS2005中使用C#)


阅读 549

收藏
2020-07-28

共1个答案

小编典典

来自moogs的Wikipedia条目是平滑数据的良好起点。但这并不能帮助您做出决定。

这完全取决于您的数据以及所需的处理速度。

移动平均线
将使顶部值变平。如果您对最小值和最大值感兴趣,请不要使用它。同样,我认为使用移动平均线会影响您对加速度的测量,因为它将使数据变平(一点点),从而使加速度看起来较小。一切都归结为所需的精度。

Savitzky – Golay 快速算法。和移动平均线一样快。那将保留峰的高度。实施起来有些困难。您需要正确的系数。我会选这个。

卡尔曼滤波器
如果知道分布,则可以得到很好的效果(在GPS导航系统中使用)。可能难以实施。我提到这一点是因为我过去曾经使用过它们。但是对于这类人来说,对于初学者来说,它们可能不是一个好选择。

以上将减少信号上的噪声。

接下来,您需要检测“加速度”的起点和终点。您可以通过创建原始信号的导数来实现。导数与Y轴交叉的点(零)可能是信号中的峰值,并且可能指示加速度的开始和结束。

然后,您可以创建一个二阶导数,以获取自身的最小和最大加速度。

2020-07-28