развертка (deconvolution)
- From
- Aleksey Vaneev (2:5003/115.1)
- To
- Evgenij Masherov ()
- Date
- 2003-03-20T22:26:04Z
- Area
- RU.ALGORITHMS
20 марта 2003, Evgenij Masherov to Aleksey Vaneev:
AV>> 88200. Алиасинга точно нет.
EM> Разве что на высших гармониках... После микрофона какие-нибудь фильтры
EM> стоят?
Думаю, нет. Максимум - фильтр на АЦП. Но на самом деле, так как фактическая разрядность записи 16 битная, частоты выше 30 кГц практически не просматриваются - вероятно, активно поглощаются воздухом. Но верхняя часть спектра не критична - достаточно из 88200 восстановить 44100 Гц файлы.
EM> Комплексные спектры-то?
Да.
EM> И еще. Деление спектров = умножение на обратный = свертка. Циклическая
EM> свертка. Т.е. конец наложится на начало. Надо дополнять нулями не
EM> меньше, чем было в исходном сигнале. Лишнее, после восстановления,
EM> отбрасывать.
Да, понятно. Только это все равно не помогает.
А что есть обратный спектр? Как его вычислить можно?
EM> Эээ... Численно равен и не похож на слух??? Мистика...
EM> Может, что-то в аппаратуре воспроизведения глючит?
EM> А некорректность по Адамару - то, что требует загрублять задачу, а не
EM> выжимать максимум...
Да, еще один момент. Восстановить то, что ожидалось, все же удалось. Но не понимаю - почему. К слову, кроме 12 секундного тестового тона был записан также 6 секундный.
Я сделал простую вещь - деконволюцию обоих этих откликов. Получил два "неправильных" отклика. Потом допустил, что отклик комнаты у них одинаковый, и поделил отклик, полученный от 12 секундного тона на отклик 6 секундного тона. В результате получил тот самый паразитный импульс. Потом отклик от 6с тона поделил на него и получил практически идеальный искомый отклик (с единичным первым импульсом).
Вот теперь думаю, почему это сработало. Правда, осталась еще одна проблема - в первоначально полученном 6с отклике присутствует "обратный образ" тестового тона - то есть синусоида с понижающейся частотой. На циклическое наложение непохоже - пробовал дополнять нулями с избытком. Подозреваю, проблема опять из-за искажений.
Решил бороться с этой проблемой фильтрацией. Кстати, а таким образом можно фильтровать адаптивно с помощью FFT? Беру фильтруемый блок, накладываю на него окно -> БПФ -> анализ и фильтрация (по ячейкам БПФ) -> обратное БПФ и вуаля? Окно таким образом выбирается, чтобы каждый новый блок накладывался с 50% покрытием на предыдущий. Думаю, подавители шумов также работают?
Да, еще по ходу дела - ты не знаешь алгоритм свертки overlap-and-save? Где-то я встречал краткое описание, но оно было слишком для меня кратким.
e-mail: picoder at mail ru
--- GoldED+/W32 1.1.5-20020105
* Origin: (2:5003/115.1)