Causal filter
From Wikipedia, the free encyclopedia
In signal processing, a causal filter is one whose output depends only on past and present inputs. A filter whose output also depends on future inputs is non-causal. Filters that operate in real time are causal. In effect that means the output sample that best represents the input at time comes out slightly later. A common design practice 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.
[edit] Example
The following definition is a moving (or "sliding") average of input data . A constant factor of 1/2 is omitted for simplicity:
where x could represent a spatial coordinate, as in image processing. But if represents time , then a moving average defined that way is non-causal (also called non-realizable), because depends on future inputs, such as . A realizable output is
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
In those terms, causality requires
and general equality of these two expressions requires h(t) = 0 for all t < 0.
[edit] Characterization of causal filters in the frequency domain
Let h(t) be a causal filter with corresponding Fourier transform H(ω). Define the function
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
which means that the Fourier transforms of h(t) and g(t) are related as follows
where is a Hilbert transform done in the frequency domain (rather than the time domain).