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