iphone - 如何提高计步器算法的准确性?

标签 iphone accelerometer

我尝试了多种通过读取加速度计来测量用户使用 iPhone 行走的步数的方法,但没有一种方法非常准确。我使用过的最准确的实现如下:

 float xx  = acceleration.x;
 float yy  = acceleration.y;
 float zz = acceleration.z;

 float dot = (mOldAccX * xx) + (mOldAccY * yy) + (mOldAccZ * zz);
 float a = ABS(sqrt(mOldAccX * mOldAccX + mOldAccY * mOldAccY + mOldAccZ * mOldAccZ));

 float b = ABS(sqrt(xx * xx + yy * yy + zz * zz));

 dot /= (a * b);

 if (dot  <= 0.994 && dot > 0.90) // bounce
 {

  if (!isChange)
  {

   isChange = YES;
   mNumberOfSteps += 1;

  } else {
   isChange = NO;
  }
 }

 mOldAccX = xx;
 mOldAccY = yy; 
 mOldAccZ = zz;
}

但是,这只能捕获 80% 的用户步数。如何提高计步器的准确性?

最佳答案

这里有一些更精确的答案来检测每个步骤。但在我的例子中,每 25 步我就会获得 + 或 - 1 步。所以我希望这对您有所帮助。 :)

if (dot <= 0.90) {
    if (!isSleeping) {
        isSleeping = YES;
        [self performSelector:@selector(wakeUp) withObject:nil afterDelay:0.3];
        numSteps += 1;
        self.stepsCount.text = [NSString stringWithFormat:@"%d", numSteps];
    }
}



- (void)wakeUp {

       isSleeping = NO;
     }

关于iphone - 如何提高计步器算法的准确性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3895894/

相关文章:

iphone - NSMutableArray 索引删除

iphone - NSUserDefaults 和 NSArray 中自定义对象的条件编码

iphone - 核心数据中带有嵌套对象数组的 Restkit 复杂对象映射

java - 需要应用程序检测来回摇动,目前仅检测单个摇动 Action

python - 优化用于事件识别的低通滤波器平滑代码

java - 从加速度计找到手机的角度?

ios - 保持iOS App唤醒以监控运动

ios - 启动时应用程序崩溃

整个应用程序都存在的 iPhone 对象 'session'

javascript - 在 Safari iOS 中使用加速度计