Skip to content

Hilbert Transform

Published On:
Dec 16, 2025
Last Updated:
Dec 16, 2025

The Hilbert transform is a operation that applies a phase shift of either 9090^\circ or 90-90^\circ to a signal in the frequency domain. Positive frequency components get shifted by 90-90^\circ and negative frequency components get shifted by +90+90^\circ. The Hilbert transform is used in signal processing to make a number of calculations convenient and is part of the process to find the analytic signal. One use case for the Hilbert transform is to find the envelope of a signal that has been amplitude modulated (i.e. demodulation — extract the message signal from the combined message + carrier signal).

The Hilbert transform is used to create an analytic signal, which is a signal comprising of the original function and it’s Hilbert transform.1

The Hilbert transform of uu can be thought of as the convolution of u(t)u(t) with the function h(t)=1πth(t) = \dfrac{1}{\pi t}. This function h(t)=1πth(t) = \dfrac{1}{\pi t} is known as the Cauchy kernel.2

This is a placeholder for the reference: fig-original-signal-vs-hilbert-transform shows a frequency and amplitude changing signal (commonly known as a chirp) and its Hilbert transform. Note how the phase of the Hilbert transform is clearly shifted by 90-90^\circ compared to the original signal (it makes the two look like quadrature signals).

Time domain and frequency domain plots of a frequency and amplitude changing signal (commonly known as a chirp) and its Hilbert transform.

Python

The Python library SciPy provides the scipy.signal.hilbert() function to compute the Hilbert transform of a signal.3

Footnotes

  1. Wikipedia (2025, Sep 18). Analytic signal. Retrieved 2025-12-16, from https://en.wikipedia.org/wiki/Analytic_signal.

  2. Wikipedia (2025, Nov 13). Hilbert transform. Retrieved 2025-12-16, from https://en.wikipedia.org/wiki/Hilbert_transform.

  3. SciPy. SciPy API > Signal processing (scipy.signal) > hilbert. Retrieved 2025-12-17, from https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.hilbert.html. 2