【问题标题】:Filtering bad data when counting steps with iPhone accelerometer使用 iPhone 加速度计计算步数时过滤不良数据
【发布时间】:2012-10-29 02:45:34
【问题描述】:

我发现此代码用于计算用户的脚步,但它无法正常工作。它没有显示确切的结果。

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    const float violence = 1.2;
    static BOOL beenhere;
    BOOL shake = FALSE;
    if (beenhere) return;
    beenhere = TRUE;
    if (acceleration.x > violence || acceleration.x < (-1* violence))
       shake = TRUE;
    if (acceleration.y > violence || acceleration.y < (-1* violence))
       shake = TRUE;
    if (acceleration.z > violence || acceleration.z < (-1* violence))
       shake = TRUE;
    if (shake) {
       steps=steps+1;
     }
  beenhere = false;
}

它也在检测错误的步骤。如何通过应用过滤器删除错误步骤?

我找了几天资料,在这里找到了一些:http://www.analog.com/library/analogDialogue/archives/41-03/pedometer.html,但是我在应用时遇到了问题。

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    获取加速度矢量的大小而不是测试 x、y 或 z 可能会有所帮助。你为什么不绘制数据,看看哪里出错了?例如,保留一组加速度矢量幅度,并标记它们触发步骤的位置。像这样的:

    typedef struct accelData {
        float mag;
        BOOL causedStep;
    } accelData;
    accelData gAcceleration[kMaxDataPoints];
    int i = 0;
    -(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
        const float violence = 1.2;
        float magnitudeOfAcceleration = sqrt (acceleration.x*acceleration.x + acceleration.y * acceleration.y + acceleration.z * acceleration.z);
        BOOL shake = magnitudeOfAcceleration > violence;
        gAcceleration[i].mag = magnitudeOfAcceleration;
        if (shake)
        {
            steps++;
            gAcceleration[i].causedStep = YES;
        }
        else
        {
            gAcceleration[i].causedStep = NO;
        }
    }
    

    获得这些数据后,您或许可以对其进行分析,并查看导致错误记录步骤的原因。也许您需要对数据进行低通滤波以减少噪音或类似的东西。

    【讨论】:

      猜你喜欢
      • 2011-09-28
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多