Цифpовой фильтp

From
Aleksey V. Vaneev (2:5003/15.1)
To
Dmitry Luzin
Date
2002-09-18T09:12:33Z
Area
RU.ALGORITHMS
17 сентября 2002, Dmitry Luzin to Slavik Levchenko:

 DL> Цифровой фильтр верхних частот второго порядка (бесконечно ипульсная
 DL> характеристика), частота дискретизации 100гц, разрядность 8 бит,
 DL> частота среза ну предположим 50гц.

Че-то нашел, но второго ли это порядка - точно не знаю. Похоже на третий.

Q - добротность фильтра (или уровень резонанса)
frequency - частота среза

    omega = 2*PI*frequency/sample_rate
    sn    = sin(omega)
    cs    = cos(omega)
    alpha = sn/(2*Q)

    b0 =  (1 + cs)/2
    b1 = -(1 + cs)
    b2 =  (1 + cs)/2
    a0 =   1 + alpha
    a1 =  -2*cs
    a2 =   1 - alpha

Это выражение используется для вычисления значения очередного отсчета:

    y[n] = (b0/a0)*x[n] + (b1/a0)*x[n-1] + (b2/a0)*x[n-2] - (a1/a0)*y[n-1] - (a2/a0)*y[n-2]

(у таком виде дается, потому что для разных типов фильтров подойдет - только коэффициенты соотетствующие нужны)

В случае 8 бит лучше работать хотя бы в 16 битах, а потом приводить с дизером (1 битным шумом) к 8 битам отсечением младших разрядов. Вообще, в 8 битах будет недопустамо велика погрешность вычислений.

 e-mail: picoder@sbis.komi.ru

--- GoldED+/W32 1.1.5-20020105
 * Origin: рева корова паска корова (2:5003/15.1)