В чем преимущество фильтрата MATLAB?

30

MATLAB filtfiltвыполняет фильтрацию вперед-назад, т.е. фильтрует, реверсирует сигнал, фильтрует снова, а затем снова переворачивает. Видимо это сделано для уменьшения фазовых лагов? Каковы преимущества / недостатки использования такой фильтрации (думаю, это приведет к эффективному увеличению порядка фильтрации).

Было бы предпочтительнее использовать filtfiltвсегда вместо filter(то есть, только прямая фильтрация)? Существуют ли какие-либо приложения, где это необходимо, а где нет?


источник
Не используйте фильтрацию нулевой фазы для аудио, поскольку это вызывает «предварительный звонок», который звучит странно. Минимально-фазовая фильтрация более естественна. ccrma.stanford.edu/~jos/filters/Linear_Phase_Really_Ideal.html
эндолиты

Ответы:

34

Вы можете лучше всего смотреть на это в частотной области. Если - входная последовательность, а - импульсная характеристика фильтра, то результат первого прохода фильтраИкс[N]час[N]

Икс(еJω)ЧАС(еJω)

с и преобразования Фурье от и соответственно. Обращение времени соответствует замене на в частотной области, поэтому после обращения времени мы получимИкс(еJω)ЧАС(еJω)Икс[N]час[N]ω-ω

Икс(е-Jω)ЧАС(е-Jω)

Второй проход фильтра соответствует другому умножению на :ЧАС(еJω)

Икс(е-Jω)ЧАС(еJω)ЧАС(е-Jω)

который после обращения времени, наконец, дает спектр выходного сигнала

(1)Y(еJω)знак равноИкс(еJω)ЧАС(еJω)ЧАС(е-Jω)знак равноИкс(еJω)|ЧАС(еJω)|2

потому что для вещественных коэффициентов фильтра мы имеем . Уравнение (1) показывает, что выходной спектр получается путем фильтрации с помощью фильтра с частотной характеристикой , который является чисто вещественным значением, т.е. его фаза равна нулю и, следовательно, существуют нет фазовых искажений.| H ( e j ω ) | 2ЧАС(е-Jω)знак равноЧАС*(еJω)|ЧАС(еJω)|2

Это теория. В обработке в реальном времени, конечно, довольно большая задержка, потому что обращение времени работает, только если вы допускаете задержку, соответствующую длине входного блока. Но это не меняет того факта, что нет фазовых искажений, это просто дополнительная задержка выходных данных. Для FIR-фильтрации этот подход не особенно полезен, поскольку вы также можете определить новый фильтр и получить тот же результат с обычной фильтрацией. Более интересно использовать этот метод с фильтрами БИХ, потому что они не могут иметь нулевую фазу (или линейную фазу, то есть чистую задержку).час^[N]знак равночас[N]*час[-N]

В сумме:

  • Если у вас есть или нужен БИХ-фильтр, и вы хотите нулевого фазового искажения, И задержка обработки не проблема, тогда этот метод полезен

  • если задержка обработки является проблемой, вы не должны использовать ее

  • Если у вас есть FIR-фильтр, вы можете легко вычислить новый отклик FIR-фильтра, который эквивалентен использованию этого метода. Обратите внимание, что с помощью КИХ-фильтров всегда может быть реализована точно линейная фаза.

Мэтт Л.
источник
Я создал тег с именем maximum-aposteriori-estimation. Не могли бы вы переименовать его в maximum-a-posteriori-estimation? По ошибке я забыл -после a. Спасибо.
Рой
15

Мне показалось, что это видео очень, очень полезно (оно подробно описывает ответ Мэтта).

Вот несколько ключевых идей из видео:

  • Нулевая фаза не приведет к искажению фазы, но приведет к не причинному фильтру. Это означает, что если данные фильтруются по мере их сбора, это не будет вариантом (действует только для хранимых данных, которые мы можем постобработать).введите описание изображения здесь
  • Когда вы реализуете непричинный фильтр, переходные процессы размываются вперед и назад (например, если мы хотим, чтобы пульсация составляла 2 дБ, тот факт, что мы собираемся выполнить прогон вперед и назад с использованием фильтра, означает, что мы хотим, чтобы каждый из они должны иметь 1 дБ).введите описание изображения здесь
  • Использует свойство обращения времени Фурье-преобразования с дискретным временем. введите описание изображения здесь
  • Эффективная частотная характеристика, вызванная FILTFILT, является величиной этой характеристики в одном направлении в квадрате. Вы берете свой входной сигнал, x[n]фильтруете его, полностью изменяете результат, фильтруете его снова и снова обращаетесь к нему (шаг обращения времени требует, чтобы все данные были доступны).введите описание изображения здесь
Aralar
источник