Bir kullanıcının ivmeölçer okuyarak bir iPhone ile yaptığı adımları ölçmenin çeşitli yollarını denedim, ancak hiçbiri çok doğru olmadı.Bu pedometre algoritmasının doğruluğunu nasıl geliştirebilirim?
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;
}
Ancak bu yalnızca kullanıcının adımların% 80'ini yakalar: Kullandığım en doğru uygulama şudur. Adımsayarımın doğruluğunu nasıl geliştirebilirim?
eksik% 20 eklemek için bir faktörle cevabınızı çarpın - O ucuz adım ölçerler böyle yapar bahis - Üzerlerinde bir duyarlılık kadranı var;) – deanWombourne