Zero-phase digital filtering

`y = filtfilt(b,a,x)`

`y = filtfilt(sos,g,x)`

`y = filtfilt(d,x)`

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] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck.
*Discrete-Time Signal Processing*. 2nd Ed. Upper Saddle River,
NJ: Prentice Hall, 1999.

[2] Mitra, Sanjit K. *Digital Signal Processing*. 2nd Ed. New
York: McGraw-Hill, 2001.

[3] Gustafsson, F. “Determining the initial states in forward-backward
filtering.” *IEEE ^{®} Transactions on Signal Processing*. Vol. 44, April 1996,
pp. 988–992.

`designfilt`

| `digitalFilter`

| `fftfilt`

| `filter`

| `filter2`