Ho provato diversi modi di misurare i passi compiuti da un utente con un iPhone leggendo l'accelerometro, ma nessuno è stato molto preciso. L'implementazione più preciso che ho usato è il seguente:Come si migliora la precisione dell'algoritmo del pedometro?
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;
}
Tuttavia, questa cattura solo l'80% di passaggi dell'utente. Come posso migliorare la precisione del mio contapassi?
moltiplicare la risposta per un fattore per aggiungere il 20% mancante - Scommetto che è ciò che fanno i pedometri economici - hanno un quadrante di sensibilità su di essi;) – deanWombourne