Я использую Matlab, чтобы найти эффективные способы деконволюции выхода спектрометра для получения исходного ввода.Функция deconvwnr () работает хорошо, за исключением того, что она вносит много синусоидального шума, от которого я избавляюсь с помощью встроенной в Matlab фильтрации по Баттерворту по полосе:
[b,a] = butter(3,[iters-freq,iters+freq],'stop'); recovered = filter(b,a,toBS);
Проблема в том, чтофильтр является односторонним, определяется как
Если x [n] является массивом, а y [n] является фильтрованным массивом, f: x-> y является односторонним, если y [n] = f (x [n], x [n-1], x [n-2] ...)
и вносит сдвиг в пики спектрометра:
Таким образом, мне нужно использовать двусторонний симметричный фильтр.Есть ли простой, встроенный способ сделать это в Matlab?
--- В качестве альтернативы - есть ли действительно хорошие, "это просто работает", устойчивые к шуму алгоритмы деконво-поддержки?