Zero-phase digital filtering
performs zero-phase digital filtering by processing the input data,
y
= filtfilt(b
,a
,x
)x
, in both the forward and reverse directions. After
filtering the data in the forward direction, filtfilt
reverses
the filtered sequence and runs it back through the filter. The result has the
following characteristics:
Zero phase distortion.
A filter transfer function equal to the squared magnitude of the original filter transfer function.
A filter order that is double the order of the filter specified by
b
and a
.
filtfilt
minimizes start-up and ending transients
by matching initial conditions. Do not use filtfilt
with
differentiator and Hilbert FIR filters, because the operation of these filters
depends heavily on their phase response.
zero-phase filters the input data, y
= filtfilt(d
,x
)x
, using a digital filter,
d
. Use designfilt
to generate d
based on
frequency-response specifications.
[1] Gustafsson, F. “Determining the initial states in forward-backward filtering.” IEEE® Transactions on Signal Processing. Vol. 44, April 1996, pp. 988–992.
[2] Mitra, Sanjit K. Digital Signal Processing. 2nd Ed. New York: McGraw-Hill, 2001.
[3] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.
designfilt
| digitalFilter
| fftfilt
| filter
| filter2