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 formula_1 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 formula_2. A constant factor of ;templatestyles src="Fraction/styles.css" / ;1⁄2 is omitted for simplicity:
formula_3
where formula_4 could represent a spatial coordinate, as in image processing. But if formula_4 represents time formula_6, then a moving average defined that way is non-causal (also called "non-realizable"), because formula_7 depends on future inputs, such as formula_8. A realizable output is
formula_9
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
formula_10
In those terms, causality requires
formula_11
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
formula_12
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
formula_13
where Θ("t") is the Heaviside unit step function.
This means that the Fourier transforms of "h"("t") and "g"("t") are related as follows
formula_14
where formula_15 is a Hilbert transform done in the frequency domain (rather than the time domain). The sign of formula_15 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:
formula_17