加速度计数据不断波动

Accelerometer Data keeps on fluctuating

我把我的 phone 放在 wooden 的同一个地方 floor.But 每次我调用下面的代码片段时,值都会不断变化

if let accelerometerData = motionManager.accelerometerData {                    
    let z:String="x:"+String(accelerometerData.acceleration.x)+" y:"+String(accelerometerData.acceleration.y)+"z"+String(accelerometerData.acceleration.z)
    print("\(z)")               
}

这是我用来初始化和启动加速度计的代码

//Accelerometer
motionManager = CMMotionManager()
motionManager.startAccelerometerUpdates()

基本上,当你只使用加速度计时,地球重力会影响加速度计的z值。但是 DeviceMotion 试图通过对从传感器收到的原始数据执行一些算法来补偿重力的这种影响(i.e.tries 以给出更准确的值 acceleration.z)。

但此算法并非 100% 准确,这就是为什么即使您将设备放在像 table 这样的平坦表面上,您也会得到一些 non-zero 值。这种不准确性的百分比非常低,但您仍然会得到不能简单忽略的结果。

您可能想要进行足够多的试验并获得它们的平均值来补偿它。同样,这个平均值并不能完全解决问题。例如,当设备正在移动时(而不是 stable,例如在 table 上),您可能会得到更多不准确的值。