Реализация анти-причинного, нулевого фазового фильтра

В случае конечная импульсная характеристика возможно спроектировать линейные фазовые фильтры, которые при применении к данным (с помощью filter или conv), просто задержка выхода на фиксированное количество выборок. Однако для БИХ фильтров фазы искажение обычно сильно нелинейно. The 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);

Теперь создайте фильтр lowpass 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 отличаются. The filtfilt линия находится в фазе с исходной синусоидой 3 Гц, в то время как filter линия задерживается. The filter линия показывает переходный процесс в ранние моменты времени. filtfilt уменьшает переходные процессы запуска фильтра путем тщательного выбора начальных условий и путем предварительного включения в последовательность входа короткой отраженной части последовательности входа.

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

См. также

| |