Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a23b1fd74c38addf

Jump to content

// Workers AI · dad joke modeWhat did the causal filter say? I've got a cause for concern.

From Wikipedia, the free encyclopedia

In signal processing, a causal filter is a linear time-invariant (LTI) causal system. The word causal indicates that the filter output depends only on past and present inputs. A filter whose output depends partly or fully on future inputs is non-causal (also, acausal), 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 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 by defining the shortened impulse response as the product of the non-causal 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.

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

[edit]

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

where 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.

Characterization of causal filters in the frequency domain

[edit]

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

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

This 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). The sign of 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:

References

[edit]
  • 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