Цифровые рекурсивные фильтры. Часть 2.

Продолжаем цикл статей, посвященных цифровым рекурсивным фильтрам…
Основной акцент в этой статье будет сделан на методике расчёта матриц z- преобразования и обосновании метода «быстрого» вычисления коэффициентов фильтра. Обычно для расчёта применяют линейную свёртку, которая требует О(N^2) операций умножения. Применение матриц z- преобразования существенно снизить количество таких операций. Удалось также получить вид матриц, требующий минимального объёма памяти.
Начало — Часть 1. продолжение — Часть 3.

I. Методика расчёта матрицы z- преобразования ФНЧ и ФВЧ

Пусть имеется аналоговый ФНЧ Баттерворта 15 порядка. Запишем его в общем виде:

Пусть нам необходимо создать цифровой ФНЧ фильтр. Как мы уже говорили в предыдущей статье, z- преобразование ФНЧ-ФНЧ имеет вид:

Подставим это выражение в формулу для H(S):

Матрица z- преобразования состоит (по столбцам) из коэффициентов выражений:

Эти коэффициенты легко получить, если воспользоваться калькулятором.
К сожалению калькулятор отказывается считать степени больше 14. Но для меньших порядков подходит замечательно.
Примечание:
Чтобы рассчитать матрицу z- преобразования ФНЧ 5 порядка, достаточно в калькуляторе найти коэффициенты:
(1-z)^5; (1-z)^4(1+z); (1-z)^3(1+z)^2; (1-z)^2(1+z)^3; (1-z)(1+z)^4; (1+z)^5;
Наберём в калькуляторе строку (1-z)^5
Получим ответ:

Первый столбец матрицы будет равен (1, -5, 10, -10, 5, -1). Далее вводим в калькулятор выражение (1-z)^4(1+z) и находим коэффициенты 2 столбца матрицы и т.д.

Мне пришлось рассчитать матрицу 14 порядка на калькуляторе и «вручную» доопределить до 15 порядка.
Окончательно матрица z- преобразования 15 порядка имеет вид:

Ужасная на вид матрица 16х16. Не смотря на это, если мы подставим реальные коэффициенты ai;, всё будет считать правильно, но долго. И занимать много памяти… Поэтому:

II. Уменьшение количества умножений при расчёте коэффициентов фильтра.

Вид матрицы можно существенно упростить. Обозначим жёлтым цветом элементы матрицы:

И обнулим их:

При этом мы «потеряли» значения искомых коэффициентов Ai, но в дальнейшем их можно легко восстановить:

Заметим, что при этом мы вдвое сократили число требуемых умножений!
Теперь значения вспомогательных коэффициентов можно представить как умножение матрицы на столбец с чётными и нечётными коэффициентами:


III. Уменьшение количества требуемой памяти для хранения коэффициентов матрицы.

Заметим, что последнее выражение можно записать в виде:

Обозначим матрицу

Окончательное решение для вспомогательных коэффициентов:

Таким образом мы сократили обшее количество коэффициентов до 64 (в четыре раза!).
В случае, если памяти микроконтроллера недостаточно, необходимо воспользоваться этим методом.

IV. Практический расчёт матрицы z- преобразования 5-го порядка.

Мы уже в примечании получили 1 столбец матрицы.
(1-z)^5=-z^5+5z^4-10z^3+10z^2-5z+1 (1, -5, 10, -10, 5, -1)
Далее вводим в калькулятор строку: (1-z)^4(1+z)
(1-z)^4(1+z)=z^5-3z^4+2z^3+2z^2-3z+1 (1, -3, 2, 2, -3, 1)
(1-z)^3(1+z)^2=-z^5+z^4+2z^3-2z^2-z+1 (1, -1, -2, 2, 1, -1)
(1-z)^2(1+z)^3=z^5+z^4-2z^3-2z^2+z+1 (1, 1, -2, -2, 1, 1)
(1-z)(1+z)^4=-z^5-3z^4-2z^3+2z^2+3z+1 (1, 3, 2, -2, -3, -1)
(1+z)^5=z^5+5z^4+10z^3+10z^2+5z+1 (1, 5, 10, 10, 5, 1)
Окончательный вид матрицы z- преобразования ФНЧ 5 порядка:

  • +8
  • 07 июня 2015, 11:26
  • Santik

Комментарии (1)

RSS свернуть / развернуть
Вопросы по теме можно задавать здесь
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.