scipy.signal.hilbert(x, N=None, axis=-1)[source]

Compute the analytic signal, using the Hilbert transform.

The transformation is done along the last axis by default.


x : array_like

Signal data. Must be real.

N : int, optional

Number of Fourier components. Default: x.shape[axis]

axis : int, optional

Axis along which to do the transformation. Default: -1.


xa : ndarray

Analytic signal of x, of each 1-D array along axis


The analytic signal x_a(t) of signal x(t) is:

\[x_a = F^{-1}(F(x) 2U) = x + i y\]

where F is the Fourier transform, U the unit step function, and y the Hilbert transform of x. [R186]

In other words, the negative half of the frequency spectrum is zeroed out, turning the real-valued signal into a complex signal. The Hilbert transformed signal can be obtained from np.imag(hilbert(x)), and the original signal from np.real(hilbert(x)).


[R186](1, 2) Wikipedia, “Analytic signal”.