Цифровой фильтр Бесселя

Все что касается фильтрации
INFERION
Сообщения: 34
Зарегистрирован: 20 окт 2015, 13:06
Откуда: Украина

Re: Цифровой фильтр Бесселя

Сообщение INFERION » 24 окт 2015, 13:21

Однако справедливости ради отмечу, что эти алгоритмы фильтрации не являются универсальными.
Поэтому я и написал за желание вкурить это z-преобразование. Острой необходимости пока что не было, но мало ли когда она возникнет?
Формула требует 5 умножений.
Каноническая форма БИХ фильтра 10-го порядка требует порядка 16-ти операций, тогда как моя реализация требует 20. Плюс ещё и архитектура у процессоров заточена под умножение с накоплением (количество операций можно уменьшить вдвое), чего в моей реализации не учитывается. Правда, они не будут работать с целочисленной системой, т.к. всё равно делить результат, чтоб влез...
Я бы Вам посоветовал на http://we.easyelectronics.ru/ статью написать на эту тему. Успех гарантирован ! :D
Кстати, там же можно обсудить модель динамической головки. Аудиофилов там полно...
Да как-то я стороною обхожу ресурс DI HALT'а (это ж его ресурс?). Там много интересного можно найти, верно, но для меня открытием явилось то, что там сидят не только просто радиолюбители и просто программисты, которые умеют решать лишь стандартные задачки...
Через чур низкочастотный фильтр получается. При Fsmpl=20 кГц частота среза 17.6 Гц
На практике RC фильтры часто нужны для сильного подавления шума АЦП не критичных ко времени сигналов в слабых МК. Термодатчик в кристалле AVR, смещение дифференциального усилителя и т.п. Поэтому там берутся вообще доли герца, часто RC второго порядка (он эффективнее остальных при равных затратах).
У меня где-то был кроссовер на фильтрах Бесселя 10-го порядка с фазовращателями, дающий на выходе синфазный сигнал на всех полосах, который я затем смешивал обратно и сравнивал с исходным сигналом. Под трёхполосную АС. Я когда-то его разрабатывал и тестировал в саунфордже, прогоняя через него 192 килосемпловые WAV файлы (частота дискретизации самого усилителя после ресемплинга). Если вам так интересно поковыряться в этом коде, то я предлагаю подождать, пока я откопаю и причешу тот фильтр. Так вот, в нём раздел идёт на границах 200Гц и 2кГц. И в принципе проблем нет с повышением частоты, срезом всего что выше 20кГц и ниже 10Гц и т.п. Арифметика целочисленная. Там я, кстати, заметил что ПК гораздо охотнее жуют плавающую точку (раза в 2 быстрее за фиксированную).
Зная Н(z) легко построить АЧХ и ФЧХ.
Я тестировал в звуковом редакторе на тестовых сигналах, сгенерированных там же (ну и на реальных музыкальных файлах). На мой взгляд, куда нагляднее и гарантирует отсутствие ошибок.

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

Re: Цифровой фильтр Бесселя

Сообщение Santik » 24 окт 2015, 13:43

Не понятно, как по такой методике построить ФНЧ с частотой среза 0,5 Найквиста...
1/(pi*R)=0,5 ???

INFERION
Сообщения: 34
Зарегистрирован: 20 окт 2015, 13:06
Откуда: Украина

Re: Цифровой фильтр Бесселя

Сообщение INFERION » 24 окт 2015, 13:57

Ну, R меньше единицы мы никак не можем получить, верно? Получается R=Fsmpl/(2pi*Fcut)+1. Ну или R=FN/(pi*Fcut)+1 (полез исправлять).

P.S. Я исправил ошибку в инициализации переменной "C" в коде. Нам не требуется раскачивать колебательный контур в фильтре, поэтому int C=0;.

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

Re: Цифровой фильтр Бесселя

Сообщение Santik » 24 окт 2015, 14:22

Поэтому я и написал за желание вкурить это z-преобразование. Острой необходимости пока что не было, но мало ли когда она возникнет?
С ростом производительности микроконтроллеров эта тема всё актуальнее :D
Каноническая форма БИХ фильтра 10-го порядка требует порядка 16-ти операций...
Этого я не понял. БИХ 10 порядка имеет 22 коэффициента. Даже если А0=1 там больше, чем 16 операций в общем случае. Редкий случай - когда частота среза равна половине Найквиста - нечётные коэфициенты Аi равны 0.
Ф02.JPG
Да как-то я стороною обхожу ресурс DI HALT'а (это ж его ресурс?)
Да. Нормальный ресурс микроконтроллерщиков - практиков. За теорией - в dsplib.ru :D
Зная Н(z) легко построить АЧХ и ФЧХ...
Я тестировал в звуковом редакторе на тестовых сигналах, сгенерированных там же (ну и на реальных музыкальных файлах). На мой взгляд, куда нагляднее и гарантирует отсутствие ошибок.

Вам не нравятся кошки? Может вы просто не умеете их готовить? (с)

INFERION
Сообщения: 34
Зарегистрирован: 20 окт 2015, 13:06
Откуда: Украина

Re: Цифровой фильтр Бесселя

Сообщение INFERION » 24 окт 2015, 14:38

Этого я не понял. БИХ 10 порядка имеет 22 коэффициента.
Я ориентировался по этой схеме:
Изображение
10-й порядок значит 5 линий задержки, верно?
Да. Нормальный ресурс микроконтроллерщиков - практиков. За теорией - в dsplib.ru
С практикой у меня проблемы редко возникают, а вот теория мне как раз и интересна. Она в дефиците и её всегда мало...
Вам не нравятся кошки? Может вы просто не умеете их готовить? (с)
Всё верно. Я прекрасно понимаю возможности теоретических расчётов, но мне тогда проще было проверить на реальном сигнале. Плюс в формулах я мог ошибку допустить, а тут звуковой редактор показывает всё как есть, без вариантов...
Вот для примера: http://forum.fonarevka.ru/showthread.php?t=22845 Как видите, циферки я люблю...

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

Re: Цифровой фильтр Бесселя

Сообщение Santik » 24 окт 2015, 15:00

10-й порядок значит 5 линий задержки, верно?
1-й порядок - 1 линия задержки
2-й порядок - 2 линии задержки
........ :D
Как видите, циферки я люблю...
Я тож... Большие... В банковском счёте. :D :D :D

INFERION
Сообщения: 34
Зарегистрирован: 20 окт 2015, 13:06
Откуда: Украина

Re: Цифровой фильтр Бесселя

Сообщение INFERION » 24 окт 2015, 15:14

1-й порядок - 1 линия задержки
2-й порядок - 2 линии задержки
........ :D
Это для вот этой схемы, верно?
Изображение
Всё равно у неё получается... 10 коэффициентов. Да, не 8...

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

Re: Цифровой фильтр Бесселя

Сообщение Santik » 24 окт 2015, 16:52

По этой схеме рекуррентная формула фильтра 10-го порядка:
y[k]=d0 X[k]+d1 X[k-1]+d2 X[k-2]+d3 X[k-3]+d4 X [k-4]+d5 X[k-5]+d6 X[k-6]+d7 X[k-7]+d8 X[k-8]+d9 X[k-9]+d10 X[k-10]-
-c1 Y[k-1]-c2Y[k-2]-c3 Y[k-3]-c4 Y [k-4]-c5 Y[k-5]-c6 Y[k-6]-c7 Y[k-7]-c8 Y[k-8]-c9 Y[k-9]-c10 Y[k-10]
Рекуррентная формула получается из действительных коэффициентов комплексной передаточной функции:

Т.е.если ты нашёл передаточную функцию - можно сразу написать формулу фильтра!
Вид рекуррентной формулы одинаковый для всех типов фильтров (Баттерворта, Бесселя, Чебышева и т.п.)

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

Re: Цифровой фильтр Бесселя

Сообщение Santik » 25 окт 2015, 06:44

... Наращивать порядок можно последовательным включением идентичных звеньев.
Вот здесь - ошибка! К сожалению весьма распространённая:
http://howtodoit.com.ua/tsifrovoy-filtr ... /#comments
Особенно мне обсуждение понравилось :D
Формально конечно никто не мешает идентичные звенья включить последовательно, но результат будет гораздо хуже, чем в случае разных звеньев (при одинаковом порядке).

INFERION
Сообщения: 34
Зарегистрирован: 20 окт 2015, 13:06
Откуда: Украина

Re: Цифровой фильтр Бесселя

Сообщение INFERION » 25 окт 2015, 16:06

Спасибо за ссылку, читаю начиная с первой статьи (за RC-фильтр). Я вчера откопал старый проект с Бесселем 10-го порядка и причёсывал его код, чтоб сюда выложить. Вот мы и можем на практике сравнить простое включение идентичных звеньев последовательно, и более грамотное. Я пока разницы не понимаю (учитывая, что звенья не имеют никакой обратной связи друг с другом).
.............
Прочитал статьи - там не написано самое главное - ПОЧЕМУ, к примеру, фильтр 10-го порядка даёт лучший результат, по сравнению с 5-ю фильтрами 2-го порядка? Первый порядок со вторым сравнивать некорректно, поскольку в нём не бывает никакой другой аппроксимации кроме критического затухания. Т.е. нет резонансов, которые делают срез более крутым. Но в чём разница между 5-ю фильтрами Баттерворта 2-го порядка, и одним 10-го?..

Кстати, вчера проверял качество колебательной системы фильтра и вот что получил:
Sine_analiz.png
Вверху мой генератор, а внизу синтезированный саундфорджем синус. Выброс на -85Дб в ИНЧ я объясняю целочисленной арифметикой и/или не целым количеством периодов в файле. Ещё снял импульсные характеристики на разных добротностях, но это уже позже покажу.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость