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

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

【问题讨论】:

    标签: objective-c iphone filter accelerometer moving-average


    【解决方案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 这非常有效!谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多