реклама на сайте
подробности

 
 
> Как правильно реализовать КИХ-эквалайзер?
elk
сообщение Jan 4 2011, 10:26
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 4-01-11
Пользователь №: 62 005



Такой вот вопрос. Я реализую алгоритм свертки и хочу прикрутить к ней дополнительно эквалайзер, причем чтобы форму кривой АЧХ эквалайзера можно было задавать в принципе любой (т.е. не обязательно привязываться к комбинации стандартных фильтров типа Баттерворта и т.д.). Свертка, естественно, реализуется через БПФ (допустим, overlap-add). Входной сигнал поступает на обработку кусками, для простоты ограничимся кусками, равными целой степени двойки (напр., 512, 1024).
Изначальная идея состоит в том, что раз фильтр задается в частотной области, то нужно просто домножить результат преобразования Фурье (ПФ) ИХ на характеристику эквалайзера (т.е. каждый комплексный коэффициент ПФ ИХ на значение коэффициента усиления эквалайзера на данной частоте). Это будет эквивалентно тому, что комплексные коэффициенты БПФ импульсной характеристики эквалайзера являются полностью действительными. Это, по-видимому, не совсем правильно, т.к. фильтры как правило моделируют минимально-фазовыми цепями, у которых АЧХ и ФЧХ связаны преобразованием Гильберта. Допустим, мы реализуем преобразование Гильберта, по АЧХ ищем ФЧХ, по ним определяем правильные действительные и мнимые части ПФ эквалайзера.
Вопрос у меня вот в чем. Для получения корректного результата линейной свертки нужно, чтобы оба сигнала во временной области были дополнены нулями до размерности ПФ, так чтобы суммарная длительность ненулевых фрагментов не превышала длину ПФ, иначе получим циклическую свертку. Но ИХ эквалайзера будет ненулевой по всей длине... получается, для корректного результата надо ПФ эквалайзера преобразовать в ИХ эквалайзера с помощью обратного ПФ, обнулить у нее половину отсчетов и вернуть назад в ПФ (причем АЧХ при этом чуть изменится...), и только после этого множить на ПФ ИХ? Но тут возникает та же проблема - мы теперь эту "эквализованную" ИХ будем еще сворачивать с сигналом, т.е. у нее тоже половина отсчетов должна быть нулевой... Опять ОПФ-обнуление коэффициентов-ПФ? Какая-то дикая схема получается... Ощущение такое, что где-то в рассуждениях допущена принципиальная ошибка, только не могу понять где именно...
В результате реализации алгоритма без учета эффекта циклической свертки (т.е. если не играться с ОПФ-обнулением-ПФ, а просто множить ПФ ИХ на ПФ эквалайзера), на краях кусков выходного сигнала (тех которые длиной типа 512, 1024) иногда наблюдаются разрывы (собственно чтобы как-то объяснить их появление и была разведена вся эта теория sm.gif )

Уточню одну вещь. Мне интересна реализация именно данного принципа (БПФ-свертка + КИХ-эквалайзер), потому советы использовать что-то другое не принимаются rolleyes.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
elk
сообщение Jan 5 2011, 05:06
Сообщение #2





Группа: Участник
Сообщений: 12
Регистрация: 4-01-11
Пользователь №: 62 005



Цитата(bahurin @ Jan 4 2011, 19:05) *
Если вы хотите сделать эквалайзер на основе бпф, то вам вообще импульсная характеристика не нужна. Есть требуемая чх эквалайзера. Берете бпф от сигнала умножаете на чх эквалайзера какую хотите и обпф вернет результат.

Хм... Вообще-то именно с этого все и начиналось:
Цитата
Изначальная идея состоит в том, что раз фильтр задается в частотной области, то нужно просто домножить результат преобразования Фурье (ПФ) ИХ на характеристику эквалайзера (т.е. каждый комплексный коэффициент ПФ ИХ на значение коэффициента усиления эквалайзера на данной частоте).

Я, правда, как бы ИХ эквализую, а не сам сигнал, чтобы делать это всего один раз при изменении АЧХ эквалайзера, а не с каждым новым куском сигнала...

Цитата( @ Jan 4 2011, 19:05) *
НО надо делать обработку с перекрытием иначе на стыках будут щелчки.

А можно поподробнее?


Цитата(Alexey Lukin @ Jan 4 2011, 21:24) *
bahurin, если эквалайзер делать на основе БПФ без использования в явном виде импульсной характеристики, то эквалайзер не будет линейным и инвариантным к сдвигу.

Т.е. я правильно считаю, что нельзя просто множить на АЧХ эквалайзера, а требуются какие-то дополнительные фокусы? Так как, собственно, при этом надо "использовать в явном виде импульсную характеристику"?

Цитата(Alexey Lukin @ Jan 4 2011, 21:24) *
Вот у вас импульс длины M и блок сигнала длины N. Выбираете размер FFT K так, что K >= M + N - 1. Вычисляете FFT размера K от импульса длины M и сигнала длины N. Перемножаете спектры, берёте обратное FFT, получаете блок результирующего сигнала длиной M + N - 1.

Без эквалайзера все именно так и работает. Вопрос: как в эту красивую и стройную схему впихнуть эквалайзер, чтоб он ничего не попортил?
Неужели единственный выход - каждый блок сигнала сворачивать с ИХ эквалайзера?
Т.е. после того, как мы получили "блок результирующего сигнала длиной M + N - 1", теперь дополнить его еще кучей нулей (для FFT размером S >= M + N - 1 + L - 1, где L - длина ИХ эквалайзера), вычислить FFT, умножить на FFT эквалайзера и наконец после обратного FFT получить окончательный результат?

(а еще у меня ИХ тоже на блоки побита... это ж как надо схему переколпаковать да перывыколпаковать wacko.gif )
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Jan 5 2011, 05:33
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Цитата(elk @ Jan 5 2011, 11:06) *
Т.е. я правильно считаю, что нельзя просто множить на АЧХ эквалайзера, а требуются какие-то дополнительные фокусы?

Правильно. При умножении двух спектров получается круговая свёртка, а не линейная. Поэтому ваша система будет нелинейна и неинвариантна к сдвигу. Будет ли это заметно на практике — зависит от крутизны АЧХ эквалайзера. Но нормальные эквалайзеры так не делают. Они честно сворачивают со своей импульсной характеристикой.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- elk   Как правильно реализовать КИХ-эквалайзер?   Jan 4 2011, 10:26
- - bahurin   Если вы хотите сделать эквалайзер на основе бпф, т...   Jan 4 2011, 14:05
- - Alexey Lukin   bahurin, если эквалайзер делать на основе БПФ без ...   Jan 4 2011, 16:24
|- - bahurin   Цитата(Alexey Lukin @ Jan 4 2011, 22:24) ...   Jan 5 2011, 13:57
- - elk   Цитата(Alexey Lukin @ Jan 5 2011, 10:33) ...   Jan 5 2011, 06:47
- - Alexey Lukin   bahurin, строго говоря, такая схема не обеспечивае...   Jan 5 2011, 14:47
- - phantom   В последнее время, что-то всех в электронную музык...   Jan 5 2011, 15:44
- - Serg76   2 Alexey Lukin Вы не верите, что сигнал можно обра...   Jan 5 2011, 15:50
|- - Mad_max   Цитата(Serg76 @ Jan 5 2011, 18:50) 2 Alex...   Feb 5 2011, 01:06
|- - Serg76   Цитата(Mad_max @ Feb 5 2011, 05:06) А что...   Feb 5 2011, 11:35
|- - Mad_max   Цитата(Serg76 @ Feb 5 2011, 14:35) Ну и з...   Feb 5 2011, 12:59
|- - petrov   Цитата(Mad_max @ Feb 5 2011, 15:59) да я ...   Feb 5 2011, 14:10
- - Alexey Lukin   Почему же? Очень даже верю! Просто я призываю ...   Jan 5 2011, 16:18
- - phantom   Как я понимаю, у elk-a правильно реализована блочн...   Jan 5 2011, 17:04
|- - Alexey Lukin   Цитата(phantom @ Jan 5 2011, 23:04) Как я...   Jan 5 2011, 17:45
- - elk   Цитата(bahurin @ Jan 5 2011, 18:57) Берет...   Jan 6 2011, 11:30
- - Alexey Lukin   Я просто не очень понимаю, в чём тут затруднение. ...   Jan 7 2011, 15:24
- - elk   Цитата(Alexey Lukin @ Jan 7 2011, 20:24) ...   Jan 8 2011, 14:26
|- - petrov   Цитата(elk @ Jan 8 2011, 20:26) Просто ум...   Jan 8 2011, 14:49
|- - Alexey Lukin   Цитата(elk @ Jan 8 2011, 20:26) Ну вот эт...   Jan 9 2011, 02:10
|- - petrov   Цитата(Alexey Lukin @ Jan 9 2011, 08:10) ...   Jan 9 2011, 06:09
|- - phantom   Цитата(Alexey Lukin @ Jan 9 2011, 09:10) ...   Jan 9 2011, 13:25
- - elk   petrov, а можно что-то типа ссылки на первоисточни...   Jan 8 2011, 16:59
|- - blackfin   Цитата(elk @ Jan 8 2011, 22:59) ... а мож...   Jan 8 2011, 17:19
- - ivan219   Сделать ИХ по АЧХ очень просто. Берём все Im = 0 а...   Jan 9 2011, 14:04
- - Alexey Lukin   Тогда свёртка тут непричём, а задача называется ...   Jan 9 2011, 23:19
- - phantom   Цитата(Alexey Lukin @ Jan 10 2011, 06:19)...   Jan 10 2011, 04:27
- - Alexey Lukin   Цитата(phantom @ Jan 10 2011, 10:27) Если...   Jan 10 2011, 12:17


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 05:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016