Цитата(alex_os @ Nov 18 2008, 09:24)

Проблема похожа на Echo cancellation (поиск Гуглом дает кучу ссылок). В двух словах сигнал, что подается на динамик взвешивается фильтром и вычитается с выхода микрофона. Коэффициенты фильтра подстраиваются адаптивно, например LMS методом. Для тренировки фильтра нужно излучать шумоподобную последовательность.
Вот неплохая книжка.Можно адаптивно, но можно и статически. Подаем дельта-функцию на динамик и запоминаем импульсный отклик системы - сигнал с микрофона h. Для борьбы с шумом можно периодически повторять этот щелчок и использовать накопление.
Физическая система (без памяти) казуальна, поэтому в уравнение
H - нижнетреугольная матрица из импульсных откликов
H * X = Y
X - сигнал на динамик
Y - сигнал с микрофона
h0 0 0 ... 0 0 0
h1 h0 0 ... 0
...........................
...........................
hn .............. h1 h0
где hn .............. h1 h0 - импульсный отклик системы
Для y0 = { 1 0 0 0 0 0 0 }т,
решить уравнение с нижнетреугольной матрицей легко прямой подстановкой.
Если решение неудовлетворительное в смысле устойчивости, то используют решения по минимуму квадратов
(Ht * H) * X = Ht * Y
ЗЫ.
Более того для решений статического типа (статический эквалайзер) существует методы решения даже в случае если Х нельзя задать произвольно (как я задал дельта-функцией) и оно задано заранее внешними условиями как некий произвольный широкополосный сигнал. И для случая когда система не казуальна, а с памятью, как это имеет обычно место при цифровой обработке (матрица отклика не треугольная, а полная).
Если вектора длинные и можно перейти к статистическому усреднению то там получаются уравнения Левинсона-Дурбина с теплицевыми матрицами. Для коротких последовательностей стат-усреднение неадекватно. Для коротких последовательностей лучше использовать быстрый рекурсивный ковариационный метод (минимум квадратов без стат-усреднения), описаный в статье Марпла, работающая программа FIR system identification на С (для комплексных сигналов) прилагается вместе с оригинальной статьей
(в статье приведен быстрый алгоритм решения ковариационных уравнений и соответствующая программа на Фортране, я перевел когда-то на С и проверил, что там нет ошибок и опечаток)
Интересно, что все электроники знают или слышали о Левинсоне-Дурбине, но почти никто не знает о быстром алгоритме для ковариационных уравнений - этому не учат в школе. А вот геофизики во всю используют.
Преимущества адаптивного решения задачи идентификации системы в его способности адаптироваться
к медленным изменениям системы. Последовательными приближениями решается та же самая система нормальных уравнений.
Понятно и адаптивные и статические методы работают только для ЛИНЕЙНЫХ систем. Поэтому самый важный вопрос - это адекватность математической модели "трубы"