Как рассчитать альфа-значение фильтра нижних частот - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь разработать шагомер на основе акселерометра. Он работает нормально, но я читал, что многие люди добавляют фильтр низких частот к данным акселерометра. Я знаю формулу, но я не понимаю, как рассчитывается альфа-значение. Несмотря на это, условия не совсем ясны или противоречивы.

Я уже определил значение dt (частоты дискретизации), используя временную метку события датчика:

private static final float NS2S = 1.0f / 1000000000.0f;
private float dt;

public void onSensorChanged(SensorEvent sensorEvent) {
        int type = sensorEvent.sensor.getType();
        long timestamp = System.currentTimeMillis();

        if (type == Sensor.TYPE_ACCELEROMETER) {
            if(this.timestamp != 0) {
                dt = (sensorEvent.timestamp - this.timestamp) * NS2S;
            }

            this.timestamp = sensorEvent.timestamp;
        }
}

Реальное значение dt составляет 0,002 с для SENSOR_DELAY_FASTEST. Для SENSOR_DELAY_NORMAL он имеет жесткий предел 0,2 с.

Реализованный ФНЧ:

/**
     * Constructs a low pass filter with alpha as smoothing parameter.
     * If alpha is 1.0 there is no smoothing.
     * If alpha is 0.0 then the new value is completely filtered.
     *
     * @param alpha Smoothing parameter
     */
    public LowPass(float alpha) {
        this.alpha = alpha;
    }

    @Override
    public void push(float value) {
        if (this.last == null)
            this.last = value;
        else
            this.last = this.last * (1.f - this.alpha) + value * this.alpha;
    }

    @Override
    public float get() {
        return this.last == null ? 0.f : this.last;
    }

В литературе написано, что человек обычно ходит со скоростью 1,5 шага / с. Я проверяю это значение, и между каждым шагом средний интервал времени составляет 550 мс.

У меня есть эта формула: тау = (альфа * дт) / (1-альфа) <=> альфа = тау / (тау + дт)

В нем говорится, что постоянная времени (тау) и частота дискретизации должны быть известны.

Частота дискретизации dt составляет 0,002 с => 5 Гц. Но какова постоянная времени тау? Это частота ходьбы человека при 1,81 Гц (550 мс)?

Как рассчитать правильное значение альфа-канала на основе значений частоты ходьбы человека 1,8 Гц и задержек датчика (т. Е. 0,002 с и 0,2 с)?

Заранее спасибо.

...