Строю цифровой фильтр 2-го порядка по этому руководству:
http://yehar.com/blog/?p=121 (начиная с заголовка "From poles and zeros to filter coefficients")
Уравнение его такое:

где in(t) и out(t) - входные и выходные сигналы соответственно. Автор пишет, что любой фильтр 2-го порядка можно записать таким образом.
Передаточная функция:

,
где z - частота в виде комплексного числа.

- позиции двух сопряжённых "нулей", где фильтр подавляет частоты

- позиции двух сопряжённых "пиков" где фильтр подчёркивает частоты.
Мне нужен фильтр низких частот. Он имеет следующую схему:
(

- частота дискретизации, соответственно,

- частота Найквиста)
Код:
__---|---__ два совпадающих нуля на (-1;0)
_/ | \_
/ | x \ Пик и его сопряжённая пара на:
| | | (px=r*cos(2pi f/SR); py=r*sin(2pi f/SR)), где r-расстояние пика от центра единичного круга, f - частота среза фильтра
-o--------+--------|-
| | | использую в нормализации 0 Гц.
\_ | x _/
\__ | __/
---|---
Значит,

Подставив и преобразовав, получил такое:

Автор упомянутого блога в статье разбирает похожий пример, только он делает фильтр без "нулей", и в числителе у него только

. Он предлагает дальше сделать так:
"Давайте посмотрим на знаменатель.
Пусть
(помножим на
)


Коэффициенты при разных степенях z - это на самом деле коэффициенты к выходу фильтра:
"Вопрос 1: откуда он это взял? (его фильтр работает, ошибок нет, я потестил)
Но у меня ещё есть чиститель. По аналогии я беру числитель:

, умножаю на

:

.
Значит, коэффициенты ко входным значениям будут:

,

,

, и я могу переписать уравнение (1) так:

?
Теперь надо сделать нормализацию, т.е. найти

. Для фильтра низких частот она вроде как делается по 0Гц, то есть



Поскольку

,

,

.
Выше мы нашли:




Подставляем в наше уравнение:
Вопрос 2: Нифига не работает. Кто видит ошибку?