"Оптимальные" коэффициенты БИХ фильтра

Все что касается фильтрации
Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

Дописал программу от N=1 до N=6.
Результаты полностью совпали с программой filter.exe
Уверен, что с Фортрана переписать на любой язык не проблема.
Пишите в личку, текстом программы поделюсь :D

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

Перейдём к рассмотрению фильтра Чебышева 1 рода 4 порядка.
Все обозначения как в статье
http://www.dsplib.ru/content/filters/ch4/ch4.html












Сделаем преобразование




Обозначим:









Обозначим






Матрица z- преобразования:
+1+1+1+1+1
-4 -2 0+2+4
+6 0 -2 0+6
-4 +2 0 -2+4
+1-1+1-1+1

Можно сразу записать ответ:


Обозначим:





Окончательно получим:





Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

Итак, формулы для определения коэффициентов фильтра Чебышева мы вывели.
Формулы проверены, полученные коэффициенты совпали с результатами filter.exe
На первый взгляд они выглядят ужасно, что отбивает всякое желание использовать их в микроконтроллере. :shock:
На самом деле не всё так плохо.
Гиперболические функции в программе микроконтроллера вычислять не надо - это константы. Можно попытаться подобрать такое Rp, при котором эти константы выглядят "прилично".
Вот как зависят коэффициенты H(s) от Rp:
Коэфф_Чебышева.JPG

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

Вот, нашёл в результате оптимизации:
Rp=1.5606270715000000 dB
b=0.7999999999999140=4/5
c=1.3199999999999300=33/25
d=0.5921379515415450
e=0.2275103612332760

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

Для перехода от H(s) к H(z) и определения коэффициентов удобно использовать матрицу z-преобразования.
Для случая N=4 матрица выглядит вот так:
2.GIF
2.GIF (3.18 КБ) 4257 просмотров




Умножая матрицу z-преобразования на вектор, состоящий из коэффициентов при мы легко получаем коэффициенты H(z).
Рассмотрим свойства этой матрицы произвольного порядка n.
1 столбец - это коэффициенты . Соответственно крайний правый столбец
Сумма элементов каждого столбца (кроме крайнего правого) =0
Сумма элементов любой нечётной строки =0
Получить матрицу z-преобразования очень просто :
элементы матрицы это коэффициенты при Z при умножении полиномов:
первый столбец
второй столбец
третий столбец
четвёртый столбец
и пятый
При больших значениях N будет удобнее пользоваться калькулятором :D :
http://www.mathsolution.ru/math-task/simplifi-polynom

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

Следящий ФНЧ Чебышева 4 порядка.
Входной сигнал: белый шум. :D
Следящий фильтр.jpg

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

Ещё раз о переходе ФНЧ-ФВЧ...
Santik писал(а):Итак, коэффициенты для ФНЧ рассчитаны. А что делать, если нужен ФВЧ?
Да практически ничего.
Коэффициенты an - не изменятся (при той же частоте и Rp). :shock:
Коэффициенты bn надо умножить на
и изменить знак у нечётных элементов. Всё...
Всё сказанное справедливо только для случая Rp=3 дБ и частотной нормировке (ФНЧ-ФНЧ), применённой в программе filter.exe

Существует универсальный и быстрый (почти мгновенный :lol: ) способ перехода от ФНЧ к ФВЧ.
Пусть нам нужен ФВЧ с F/FN=0.2 и Rp=1.54313 дБ
Надо рассчитать ФНЧ с тем же параметром Rp=1.54313 дБ и частотой F/FN=1-0.2=0.8
Затем меняем знаки у нечетных коэффициентов an и bn.
На этом определение коэффициентов ФВЧ закончено.(с) :D

Это справедливо для любых фильтров любого порядка!

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

Проиллюстрируем всё выше сказанное двумя картинками из программы filter.exe
ФНЧ.JPG
ФВЧ.JPG

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

И ещё две картинки:
ФНЧ2.JPG
ФВЧ2.JPG

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: "Оптимальные" коэффициенты БИХ фильтра

Сообщение Santik »

Характеристика H(s) симметрична относительно частоты 0:
HS.JPG
Поэтому у каждого ФНЧ есть свой "зеркальный" ФВЧ.
На простом примере фильтра Баттерворта 2 порядка продемонстрируем это:

Перейдём к H(z):


Коэффициенты найдём через матрицу z-преобразования.


CodeCogsEqn (10).gif
CodeCogsEqn (10).gif (1.69 КБ) 4220 просмотров
Теперь перейдём к ФВЧ


Коэффициенты найдём через матрицу z-преобразования.
Так как мы используем "обратное" z-преобразование, вид матрицы изменится.
CodeCogsEqn (11).gif
CodeCogsEqn (11).gif (1.82 КБ) 4220 просмотров
Положим и окончательно получим;



Соответственно изменится знак у нечётного коэффициента

Ответить