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,
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.
The following definition is a sliding or moving average of input data
s(x)
f(x)=
x+1 | |
\int | |
x-1 |
s(\tau)d\tau =
+1 | |
\int | |
-1 |
s(x+\tau)d\tau
where
x
x
(t)
f(t)
s(t+1)
f(t-1)=
0 | |
\int | |
-2 |
s(t+\tau)d\tau=
+2 | |
\int | |
0 |
s(t-\tau)d\tau
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)=
infty | |
\int | |
-infty |
h(\tau)s(t-\tau)d\tau.
In those terms, causality requires
f(t)=
infty | |
\int | |
0 |
h(\tau)s(t-\tau)d\tau
and general equality of these two expressions requires h(t) = 0 for all t < 0.
Let h(t) be a causal filter with corresponding Fourier transform H(ω). Define the function
g(t)={h(t)+h*(-t)\over2}
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\Theta(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(\omega)=\left(\delta(\omega)-{i\over\pi\omega}\right)*G(\omega)= G(\omega)-i ⋅ \widehatG(\omega)
where
\widehatG(\omega)
\widehatG(\omega)
Taking the Hilbert transform of the above equation yields this relation between "H" and its Hilbert transform:
\widehatH(\omega)=iH(\omega)