The HILBERT function outputs a series that has all periodic terms phase-shifted by 90 degrees. This transform has the interesting property that the correlation between a series and its own Hilbert transform is mathematically zero.

This routine is written in the IDL language. Its source code can be found in the file hilbert.pro in the lib subdirectory of the IDL distribution.

## Syntax

*Result* = HILBERT(*X* [, *D*])

## Return Value

The return value is a complex-valued vector with the same size as the input vector. HILBERT generates the fast Fourier transform using the FFT function, and shifts the first half of the transform products by +90 degrees and the second half by -90 degrees. The constant elements in the transform are not changed. Angle shifting is accomplished by multiplying or dividing by the complex number, *i* = (0.0000, 1.0000). The shifted vector is then submitted to FFT for transformation back to the “time” domain and the output is divided by the number elements in the vector to correct for multiplication effect peculiar to the FFT algorithm.

**Note: **Because HILBERT uses FFT, it exhibits the same side effects with respect to input arguments as that function.

## Arguments

### X

An *n*-element floating-point or complex-valued vector.

### D

A flag for rotation direction. Set D = +1 for a positive rotation (the default). Set D = ‑1 for a negative rotation.

## Keywords

None

## Version History

Original |
Introduced |