Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

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`

Was this topic helpful?