MATLAB filtfilt
выполняет фильтрацию вперед-назад, т.е. фильтрует, реверсирует сигнал, фильтрует снова, а затем снова переворачивает. Видимо это сделано для уменьшения фазовых лагов? Каковы преимущества / недостатки использования такой фильтрации (думаю, это приведет к эффективному увеличению порядка фильтрации).
Было бы предпочтительнее использовать filtfilt
всегда вместо filter
(то есть, только прямая фильтрация)? Существуют ли какие-либо приложения, где это необходимо, а где нет?
Ответы:
Вы можете лучше всего смотреть на это в частотной области. Если - входная последовательность, а - импульсная характеристика фильтра, то результат первого прохода фильтрах [ н ] ч [ п ]
с и преобразования Фурье от и соответственно. Обращение времени соответствует замене на в частотной области, поэтому после обращения времени мы получимИкс( еJ ω) ЧАС( еJ ω) х [ н ] ч [ п ] ω - ω
Второй проход фильтра соответствует другому умножению на :ЧАС( еJ ω)
который после обращения времени, наконец, дает спектр выходного сигнала
потому что для вещественных коэффициентов фильтра мы имеем . Уравнение (1) показывает, что выходной спектр получается путем фильтрации с помощью фильтра с частотной характеристикой , который является чисто вещественным значением, т.е. его фаза равна нулю и, следовательно, существуют нет фазовых искажений.| H ( e j ω ) | 2ЧАС( е- J ω) = H*( еJ ω) | ЧАС( еJ ω) |2
Это теория. В обработке в реальном времени, конечно, довольно большая задержка, потому что обращение времени работает, только если вы допускаете задержку, соответствующую длине входного блока. Но это не меняет того факта, что нет фазовых искажений, это просто дополнительная задержка выходных данных. Для FIR-фильтрации этот подход не особенно полезен, поскольку вы также можете определить новый фильтр и получить тот же результат с обычной фильтрацией. Более интересно использовать этот метод с фильтрами БИХ, потому что они не могут иметь нулевую фазу (или линейную фазу, то есть чистую задержку).час^[ n ] = h [ n ] ∗ h [ - n ]
В сумме:
Если у вас есть или нужен БИХ-фильтр, и вы хотите нулевого фазового искажения, И задержка обработки не проблема, тогда этот метод полезен
если задержка обработки является проблемой, вы не должны использовать ее
Если у вас есть FIR-фильтр, вы можете легко вычислить новый отклик FIR-фильтра, который эквивалентен использованию этого метода. Обратите внимание, что с помощью КИХ-фильтров всегда может быть реализована точно линейная фаза.
источник
maximum-aposteriori-estimation
. Не могли бы вы переименовать его вmaximum-a-posteriori-estimation
? По ошибке я забыл-
послеa
. Спасибо.Мне показалось, что это видео очень, очень полезно (оно подробно описывает ответ Мэтта).
Вот несколько ключевых идей из видео:
x[n]
фильтруете его, полностью изменяете результат, фильтруете его снова и снова обращаетесь к нему (шаг обращения времени требует, чтобы все данные были доступны).источник