Android 压力传感器的低通滤波器

Low Pass Filter for Android Pressure Sensor

已尝试修改加速器 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];

有没有人有一些见解?

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

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

极度过于简单化的解释

对于 alpha=0.8,'new' 压力值是传感器提供的实际当前压力的 80% + 'old' 压力值的 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; 
   }
}