我已經嘗試了幾種方法來測量用戶通過讀取加速度計所做的步驟,但沒有一個非常準確。我用最準確的實現如下:如何提高此計步器算法的準確度?
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%。我如何提高計步器的準確度?
乘你的答案的一個因素添加缺少的20% - 我敢打賭,這就是便宜的計步器 - 他們有一個敏感的撥號在他們;) – deanWombourne 2010-10-09 19:49:24