exponenta event banner

Реализация антикаузального фильтра нулевой фазы

В случае КИХ-фильтров можно проектировать линейные фазовые фильтры, которые при применении к данным (с помощью filter или conv), просто задержать выход на фиксированное количество выборок. Однако для БИХ-фильтров фазовое искажение обычно является очень нелинейным. filtfilt функция использует информацию в сигнале в точках до и после текущей точки, по существу «заглядывая в будущее», для устранения фазового искажения.

Посмотреть, как filtfilt делает это, напомним, что если Z-преобразование действительной последовательности x (n) равно X (z), то Z-преобразование обращенной во времени последовательности x (-n) равно X (z-1). Рассмотрим следующую схему обработки:

Когда | z | = 1, то есть z = ejλ, выходной сигнал уменьшается до X (ejλ) | H (ejλ) | 2. Учитывая все выборки последовательности x (n), возможна дважды отфильтрованная версия x, которая имеет искажение нулевой фазы.

Например, 1-секундный сигнал длительности, дискретизированный на частоте 100 Гц, состоящий из двух синусоидальных компонентов на частоте 3 Гц и 40 Гц, представляет собой

fs = 100;
t = 0:1/fs:1;
x = sin(2*pi*t*3)+.25*sin(2*pi*t*40);

Теперь создайте фильтр нижних частот Баттерворта 6-го порядка для фильтрации высокочастотной синусоиды. Фильтр x использование обоих filter и filtfilt для сравнения:

[b,a] = butter(6,20/(fs/2));

y = filtfilt(b,a,x);
yy = filter(b,a,x);

plot(t,x,t,y,t,yy)
legend('Original','filtfilt','filter')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Original, filtfilt, filter.

Обе отфильтрованные версии устраняют 40 Гц синусоиду, явную в исходном сигнале. На графике также показано, как filter и filtfilt различаются. filtfilt линия находится в фазе с исходной синусоидой 3 Гц, в то время как filter линия задерживается. filter линия показывает переходный процесс в начале времени. filtfilt уменьшает переходные процессы запуска фильтра за счет тщательного выбора исходных условий и за счет добавления во входную последовательность короткой отраженной части входной последовательности.

Для получения наилучших результатов убедитесь, что фильтруемая последовательность имеет длину, по крайней мере, в три раза превышающую порядок фильтрации, и сужается до нуля на обеих кромках.

См. также

| |