您如何使用移动平均值过滤 iPhone OS 中的加速度计值

Posted

技术标签:

【中文标题】您如何使用移动平均值过滤 iPhone OS 中的加速度计值【英文标题】:How do you use a moving average to filter out accelerometer values in iPhone OS 【发布时间】:2011-01-17 08:51:36 【问题描述】:

我想使用移动平均值过滤加速度计值,这是如何完成的? 谢谢

【问题讨论】:

【参考方案1】:

一个简单的单极低通递归 IIR 滤波器快速且易于实现,例如

xf = k * xf + (1.0 - k) * x;
yf = k * yf + (1.0 - k) * y;

其中 x, y 是原始(未过滤的)X/Y 加速度计信号,xf, yf 是过滤后的输出信号,k 确定滤波器的时间常数(通常介于 0.9 和 0.9999 之间...,其中k 越大表示时间常数越长)。

您可以凭经验确定k,或者如果您知道您需要的截止频率Fc,那么您可以使用公式:

k = 1 - exp(-2.0 * PI * Fc / Fs)

其中Fs 是采样率。

请注意,xf, yf 是上式的右轴输出信号的先前值,以及左轴上的新输出值。

另请注意,我们在这里假设您将以固定的时间间隔对加速度计信号进行采样,例如每 10 毫秒。时间常数将是 k 和该采样间隔的函数。

【讨论】:

所以 x 和 y 是 accelerometer.x 和 accelerometer.y,我很困惑,我不知道“原始输入信号”是什么。 :// 不,y 是滤波后的信号,x 是加速度计给出的信号。写成 xf = k*xf + (1.0-k)*x 会更清楚,其中 xf 是 x 的过滤版本,以及 y 轴的类似方程。 @Andrew - 感谢您的建议 - 现在进行了编辑以提高清晰度(我希望!)。 @PaulR 好的,所以我们对加速度计数据进行平滑处理,我​​们应该对哪个值做出反应? 您可以简单地获取两个采样加速度之间的差异。 @PaulR 这非常有效!谢谢你:)

以上是关于您如何使用移动平均值过滤 iPhone OS 中的加速度计值的主要内容,如果未能解决你的问题,请参考以下文章

熊猫移动平均线[重复]

使用iPhone应用程序中的过渡移动要触摸的对象

R中的累积和、移动平均线和SQL“分组依据”等价物

如何在 Objective-C 中的 OS2 中将数据从 Iphone 发送到 Apple Watch

数据挖掘使用移动平均预测道琼斯纳斯达克标准普尔指数——Python中的基本数据操作和可视化

如何使用 sql 中的每 n 行(例如第 24、48 和 72 行)计算移动平均值?