适用于Android压力传感器的低通滤波器

时间:2016-11-21 08:02:28

标签: android filter sensor pressure

尝试使用加速器LPF的android开发人员文档进行调整,但它似乎不适用于压力

    float pressure_value = 0.0f;
    float height = 0.0f;
    float height2 = (float) 964.98;
    final float alpha = (float) 0.8;


    if( Sensor.TYPE_PRESSURE == event.sensor.getType() ) {
        pressure_value = event.values[0];
        event.values[0] = alpha * event.values[0] + (1 - alpha) * event.values[0];
        event.values[1] = alpha * event.values[1] + (1 - alpha) * event.values[1];
        event.values[2] = alpha * event.values[2] + (1 - alpha) * event.values[2];

有没有人有一些见解?

1 个答案:

答案 0 :(得分:0)

压力传感器只有一个值,即event.values [0]。一个简单的低通滤波器看起来像:

pressure = alpha*event.values[0] + (1 - alpha)*pressure

极度 过度简化的解释

对于alpha = 0.8,“新”压力值是传感器提供的实际当前压力的80%+“旧”压力值的20%。增加alpha值会使其对压力波动更敏感,较低的alpha值会降低噪音(更多过滤)。

更多解释性代码:

private float alpha = 0.8f; 
private float filteredPressure = 0.0f; 

@Override
public final void onSensorChanged(SensorEvent event) {
   if (Sensor.TYPE_PRESSURE == event.sensor.getType()) { 
      float currentPressure = event.values[0]; 
      filteredPressure = (alpha*currentPressure) + (1 - alpha)*filteredPressure; 
   }
}