Causal filter

From The Right Wiki
(Redirected from Anti-causal filter)
Jump to navigationJump to search

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 t, 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.

File:Illustration of causal and non-causal filters.svg
Each component of the causal filter output begins when its stimulus begins. The outputs of the non-causal filter begin before the stimulus begins.

Example

The following definition is a sliding or moving average of input data s(x). A constant factor of 12 is omitted for simplicity:

f(x)=x1x+1s(τ)dτ=1+1s(x+τ)dτ

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

f(t1)=20s(t+τ)dτ=0+2s(tτ)dτ

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

f(t)=(h*s)(t)=h(τ)s(tτ)dτ.

In those terms, causality requires

f(t)=0h(τ)s(tτ)dτ

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

g(t)=h(t)+h*(t)2

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

h(t)=2Θ(t)g(t)

where Θ(t) is the Heaviside unit step function. This means that the Fourier transforms of h(t) and g(t) are related as follows

H(ω)=(δ(ω)iπω)*G(ω)=G(ω)iG^(ω)

where G^(ω) is a Hilbert transform done in the frequency domain (rather than the time domain). The sign of G^(ω) 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:

H^(ω)=iH(ω)

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 (PDF), MIT OpenCourseWare