您如何使用移动平均值过滤 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 中的加速度计值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Objective-C 中的 OS2 中将数据从 Iphone 发送到 Apple Watch