# Causal filter

In signal processing, a **causal filter** is a linear and time-invariant causal system. The word *causal* indicates that the filter output depends only on past and present inputs. A filter whose output also depends on future inputs is **non-causal**, whereas a filter whose output depends *only* on future inputs is **anti-causal**. Systems (including filters) that are *realizable* (i.e. that operate in real time) must be causal because such systems cannot act on a future input. In effect that means the output sample that best represents the input at time [math]\displaystyle{ t, }[/math] comes out slightly later. A common design practice for digital filters is to create a realizable filter by shortening and/or time-shifting a non-causal impulse response. If shortening is necessary, it is often accomplished as the product of the impulse-response with a window function.
An example of an anti-causal filter is a maximum phase filter, which can be defined as a stable, anti-causal filter whose inverse is also stable and anti-causal.

## Example

The following definition is a *sliding* or moving average of input data [math]\displaystyle{ s(x)\, }[/math]. A constant factor of ^{1}⁄_{2} is omitted for simplicity:

- [math]\displaystyle{ f(x) = \int_{x-1}^{x+1} s(\tau)\, d\tau\ = \int_{-1}^{+1} s(x + \tau) \,d\tau\, }[/math]

where [math]\displaystyle{ x }[/math] could represent a spatial coordinate, as in image processing. But if [math]\displaystyle{ x }[/math] represents time [math]\displaystyle{ (t)\, }[/math], then a moving average defined that way is **non-causal** (also called *non-realizable*), because [math]\displaystyle{ f(t)\, }[/math] depends on future inputs, such as [math]\displaystyle{ s(t+1)\, }[/math]. A realizable output is

- [math]\displaystyle{ f(t-1) = \int_{-2}^{0} s(t + \tau)\, d\tau = \int_{0}^{+2} s(t - \tau) \, d\tau\, }[/math]

which is a delayed version of the non-realizable output.

Any linear filter (such as a moving average) can be characterized by a function *h*(*t*) called its impulse response. Its output is the convolution

- [math]\displaystyle{ f(t) = (h*s)(t) = \int_{-\infty}^{\infty} h(\tau) s(t - \tau)\, d\tau. \, }[/math]

In those terms, causality requires

- [math]\displaystyle{ f(t) = \int_{0}^{\infty} h(\tau) s(t - \tau)\, d\tau }[/math]

and general equality of these two expressions requires *h*(*t*) = 0 for all *t* < 0.

## Characterization of causal filters in the frequency domain

Let *h*(*t*) be a causal filter with corresponding Fourier transform *H*(ω). Define the function

- [math]\displaystyle{ g(t) = {h(t) + h^{*}(-t) \over 2} }[/math]

which is non-causal. On the other hand, *g*(*t*) is Hermitian and, consequently, its Fourier transform *G*(ω) is real-valued. We now have the following relation

- [math]\displaystyle{ h(t) = 2\, \Theta(t) \cdot g(t)\, }[/math]

where Θ(*t*) is the Heaviside unit step function.

This means that the Fourier transforms of *h*(*t*) and *g*(*t*) are related as follows

- [math]\displaystyle{ H(\omega) = \left(\delta(\omega) - {i \over \pi \omega}\right) * G(\omega) = G(\omega) - i\cdot \widehat G(\omega) \, }[/math]

where [math]\displaystyle{ \widehat G(\omega)\, }[/math] is a Hilbert transform done in the frequency domain (rather than the time domain). The sign of [math]\displaystyle{ \widehat G(\omega)\, }[/math] may depend on the definition of the Fourier Transform.

Taking the Hilbert transform of the above equation yields this relation between "H" and its Hilbert transform:

- [math]\displaystyle{ \widehat H(\omega) = i H(\omega) }[/math]

## References

- Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (September 2007),
*Numerical Recipes*(3rd ed.), Cambridge University Press, p. 767, ISBN 9780521880688 - Rowell (January 2009),
*Determining a System’s Causality from its Frequency Response*, MIT OpenCourseWare

Original source: https://en.wikipedia.org/wiki/Causal filter.
Read more |