Hilbert Transform

The Hilbert transform of a function f(x) is defined by:

Theoretically, the integral is evaluated as a Cauchy principal value. Computationally one can write the Hilbert transform as the convolution:

which by the convolution theorem of Fourier transforms, may be evaluated as the product of the transform of f(x) with -i*sgn(x), where:

The Hilbert transform can be considered to be a filter which simply shifts phases of all frequency components of its input by -π/2 radians.

An "analytic" (complex time) signal Y(t) can be constructed from a real-valued input signal y(t):


The real and imaginary parts can be expressed in polar coordinates as:


These Igor commands compute a signal´s "envelope" using the HilbertTransform operation:

	HilbertTransform inputSignal	// creates W_Hilbert
	Rename W_Hilbert, envelope
	envelope= real(r2polar(cmplx(inputSignal[p], envelope[p])))

Note that the Hilbert transform of a constant is zero. If you compute the Hilbert transform in more than one dimension and one of the dimensions does not vary (is a constant), the transform will be zero (or at least numerically close to zero).

Igor´s HilbertTransform operation computes the Hilbert transformation of real or complex (single or double precision) data of 1-3 dimensions.