развертка (deconvolution)

From
Evgenij Masherov (2:5020/175.2)
To
Aleksey Vaneev ()
Date
2003-03-21T10:03:04Z
Area
RU.ALGORITHMS
From: "Evgenij Masherov" <EMasherow@nsi.ru>

Thu Mar 20 2003 22:26, Aleksey Vaneev wrote to Evgenij Masherov:


 EM>> И еще. Деление спектров = умножение на обратный = свертка. Циклическая
 EM>> свертка. Т.е. конец наложится на начало. Надо дополнять нулями не 
 EM>> меньше, чем было в исходном сигнале. Лишнее, после восстановления,
 EM>> отбрасывать.

 AV> Да, понятно. Только это все равно не помогает.

 AV> А что есть обратный спектр? Как его вычислить можно?

Величина обратная исходному спектру.

 EM>> Эээ... Численно равен и не похож на слух??? Мистика...
 EM>> Может, что-то в аппаратуре воспроизведения глючит?
 EM>> А некорректность по Адамару - то, что требует загрублять задачу, а не
 EM>> выжимать максимум...

 AV> Да, еще один момент. Восстановить то, что ожидалось, все же удалось. Но
 AV> не понимаю - почему. К слову, кроме 12 секундного тестового тона был
 AV> записан также 6 секундный.

 AV> Я сделал простую вещь - деконволюцию обоих этих откликов. Получил два
 AV> "неправильных" отклика. Потом допустил, что отклик комнаты у них
 AV> одинаковый, и поделил отклик, полученный от 12 секундного тона на отклик
 AV> 6 секундного тона. В результате получил тот самый паразитный импульс.
 AV> Потом отклик от 6с тона поделил на него и получил практически идеальный
 AV> искомый отклик (с единичным первым импульсом).

 AV> Вот теперь думаю, почему это сработало. Правда, осталась еще одна
 AV> проблема - в первоначально полученном 6с отклике присутствует "обратный
 AV> образ" тестового тона - то есть синусоида с понижающейся частотой. На
 AV> циклическое наложение непохоже - пробовал дополнять нулями с избытком.
 AV> Подозреваю, проблема опять из-за искажений.

Так может, паразитный импульс и есть отклик комнаты? Можно чуть подробнее
методику?

 AV> Решил бороться с этой проблемой фильтрацией. Кстати, а таким образом
 AV> можно фильтровать адаптивно с помощью FFT? Беру фильтруемый блок,
 AV> накладываю на него окно -> БПФ -> анализ и фильтрация (по ячейкам БПФ) ->
 AV> обратное БПФ и вуаля? Окно таким образом выбирается, чтобы каждый новый
 AV> блок накладывался с 50% покрытием на предыдущий. Думаю, подавители шумов
 AV> также работают?

Тоже дополнять нулями надо.

 AV> Да, еще по ходу дела - ты не знаешь алгоритм свертки overlap-and-save?
 AV> Где-то я встречал краткое описание, но оно было слишком для меня кратким.

У Гольденберга, Матюшкина и Поляка, например. Есть в Сети dspbook.km.ru,
например.
Вкратце - дополняем свертываемые отрезки (секции сигнала) нулями в равном
количестве, БПФ, перемножаем, обратное БПФ. Складываем первую половину
полученного с сохраненной от предыдущего шага второй половиной. Вторую
половину этого шага запоминаем.

Евгений Машеров АКА СанитарЖеня

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)