Цифровой эквалайзер на БИХ фильтре

Алгоритмы: от сортировки пузырьком до численных методов

Модераторы: C_O_D_E, DeeJayC

Ответить
Foks
Сообщения: 2
Зарегистрирован: 16 апр 2008, 15:46
Откуда: Украина, Кировоград
Контактная информация:

16 апр 2008, 16:24

В общем, целью является разработка простенького цифрового эквалайзера на микроконтроллере. Должна быть возможность регулировки низких, средних и высоких частот.

Требуется минимальное количество операций, БПФ с нормальным качеством реализовать не получится, да и смысла в нём нет. Решил использовать цифровой БИХ-фильтр.

Так как с ЦФ до этого не сталкивался, возникли проблемы. Во-первых с пониманием, а во-вторых с расчетом.

Изображение (здесь всё понятно)

Далее для полософормирующего фильтра подсчитываем коеффициенты:

A=10^(dBgain/40)

omega = 2*pi*frequency/sampleRate

alpha=sin(omega)*sinh( ln(2)/2 * bandwidth * omega/sin(omega) )

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

Заданы:
frequency - центральная частота
sampleRate - частота дискретизации
dbGain - усиление
bandwidth - ширина полосы

Только это для фильтра второго порядка. Вопросы такие:
1) Что здесь неправильно?
2) Какого порядка должен быть примерно фильтр для указанной выше цели?
3) И самое главное, как расчитать коеффициенты, желательно общую формулу?

Заранее, спасибо.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

16 апр 2008, 16:59

В вашем случае я бы порекомендовал трехпроходную вейвлет-фильтрацию, а можно сделать даже и в один проход, предварительно скомпоновав три вейвлет функции в одной. Тем более что сам алгоритм, на мой взгляд, проще - не рекурсивный как в БИХ и памяти много не сожрет. Реализация по скорости ничуть не уступает БИХ-фильтрации. При использовании предварительно расчитанных таблиц - даже быстрее. А касаемо БИХ - про него уже сказано очень много и в инете полным-полно информации на этот счет.
It's a long way to the top if you wanna rock'n'roll
Foks
Сообщения: 2
Зарегистрирован: 16 апр 2008, 15:46
Откуда: Украина, Кировоград
Контактная информация:

17 апр 2008, 19:11

Спасибо. А где можно найти инфу о вейвлет-фильтрации?
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

21 апр 2008, 11:04

Гугль/Википедия
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Piligrim
Сообщения: 0
Зарегистрирован: 24 ноя 2012, 17:45

24 ноя 2012, 19:23

Здравствуйте форумчане. Я понимаю, что чуть-чуть (эдеак на пару лет :) ) опоздал с ответом, но возможно читающему будет интересно, как же все-таки можно сделать эквалайзер например на микроконтроллере. Я сам интересовался этими и связанными с этим вопросами и могу посоветовать ссылку http://howtodoit.com.ua/tsifrovoy-bih-filtr-iir-filter/ как введение в БИХ фильтры и http://howtodoit.com.ua/tsifrovoy-bih-f ... r-program/ как конкретную реализацию. Удачи!)
Ответить