# Hilbert transform The **Hilbert transform** is a linear operator on real-valued functions of time that shifts the phase of every frequency component by exactly ∓90°, leaving every component's amplitude untouched. In the frequency domain it is multiplication by `−j·sgn(ω)`: a quarter turn one way for every positive frequency and the opposite quarter turn for every negative one, the exact notation this page's primary microsim uses as its own working definition. The sketch builds a test signal from a short list of sine and cosine components, lets the reader dial an arbitrary phase shift onto every one of them at once, and shows, with two live numbers, exactly which single dial setting reproduces the transform. Because shifting a cosine by −90° turns it into a sine, adding the shifted signal back as an imaginary part builds an [[Analytic_signal|analytic signal]], a single complex-valued function whose length is the original signal's instantaneous amplitude and whose angle unwinds at the original signal's instantaneous frequency. That construction underlies single-sideband radio transmission and every envelope detector that has to work on a signal whose frequency is not fixed. The shift is not free, however: because its time-domain kernel reaches equally into the past and the future, an exact Hilbert transformer cannot be built as a causal filter, and every real implementation is an approximation traded against delay and bandwidth. ## Definition For a real-valued function `u(t)` of [[Time_domain|time]], the Hilbert transform is the singular integral `H{u}(t) = (1/π) p.v. integral_{-infinity}^{infinity} u(τ)/(t-τ) dτ`, a Cauchy principal value because the integrand blows up exactly at τ = t. Equivalently, `H{u}` is the [[Convolution|convolution]] of `u` with the kernel `1/(πt)`, a kernel that is odd, two-sided, and decays only as `1/t`, which is why the integral needs the principal-value convention to exist at all. The kernel's own Fourier transform is the sign function up to a constant, so in the frequency domain the same operator is simply multiplication by `H(ω) = −j·sgn(ω)`: a phase shift of −90° at every positive frequency, +90° at every negative one, and no change to any frequency's magnitude. This is the exact notation carried by this page's sketch, whose phase dial θ reproduces the transform only at θ = −90° and confirms it against the true transform with a banner when the two coincide. Euler's formula writes a cosine as the sum of two counter-rotating phasors, `cos θ = (e^{jθ} + e^{-jθ})/2`,[^euler-def] and a −90° rotation of a phasor multiplies it by `−j`; combining the two facts is why the Hilbert transform of `cos(ω0 t)` is `sin(ω0 t)` for positive ω0 and `−sin(ω0 t)` for negative ω0, the single relation from which most of the rest of this article follows. ## History The transform is named for David Hilbert, whose study of a boundary-value problem for analytic functions, now called the Riemann–Hilbert problem, produced a construction of this kind.[^hilbert-bio] Its place in [[Harmonic_analysis|harmonic analysis]] was secured some years later, when Marcel Riesz proved that the operator is bounded on the `L^p` spaces for every p strictly between 1 and infinity, the theorem that makes the transform a usable tool rather than an object defined only on the narrow, tidy space of square-integrable functions.[^riesz-bound] The transform's place inside signal processing arrived by an altogether different route: engineers building single-sideband radio needed a practical ninety-degree phase shifter, and the same operator harmonic analysts had studied for its boundary-value properties turned out to be exactly the tool required, which is why the transform now carries both a mathematician's name and an engineer's everyday application. ## Relationship with the Fourier transform Framed as a filter, the Hilbert transform is an all-pass network closely tied to the [[Fourier_transform]]: its frequency response `H(ω) = −j·sgn(ω)` has magnitude 1 everywhere except at ω = 0, so it passes every frequency component through unattenuated and only ever turns its phase. A filter with that property preserves a signal's energy exactly, `‖H{u}‖² = ‖u‖²`, and leaves the original signal [[Orthogonality|orthogonal]] to its own transform, `⟨u, H{u}⟩ = 0`; the sketch checks both facts numerically every frame rather than assuming them, and at the true −90° setting the two readouts settle to their ideal values, one to unity and the other to zero, drifting away from both as the phase dial is turned to any other angle. The zero-frequency component is a special case the sign function does not resolve, so a Hilbert transformer conventionally passes no DC at all; a signal with a nonzero average is understood to have that average removed before the transform is applied. ## Table of selected Hilbert transforms A short table of common pairs shows the ∓90° rule directly, each row a special case of the same frequency-domain multiplier. | Signal, `u(t)` | Hilbert transform, `H{u}(t)` | |---|---| | `cos(ω0 t)`, ω0 > 0 | `sin(ω0 t)` | | `sin(ω0 t)`, ω0 > 0 | `−cos(ω0 t)` | | `e^{jω0 t}`, ω0 > 0 | `−j e^{jω0 t}` | | constant | `0` | ## Domain of definition The principal-value integral that defines the transform exists almost everywhere for any function in `L^p` with `1 ≤ p < infinity`, and more generally for functions that are Hölder continuous or of bounded variation on the interval in question. Existence almost everywhere is not the same as existence everywhere: the integral can fail at individual points even for an otherwise well-behaved signal, which is one reason the transform is normally studied, as in [[Mathematical_analysis|mathematical analysis]] generally, as an operator between whole function spaces rather than pointwise. ## Properties Several structural properties follow directly from the transform being multiplication by `−j·sgn(ω)`. It is bounded on `L^p` for 1 < p < infinity but not at the endpoints: a bounded function's transform need not be bounded, and an integrable function's transform need not be integrable, the price paid for a kernel that only decays as `1/t`. It is anti-self-adjoint, `⟨H{f}, g⟩ = −⟨f, H{g}⟩`, the operator analogue of multiplying by the imaginary unit. Applying it twice undoes it up to a sign, `H{H{u}} = −u`, so the inverse Hilbert transform is simply its negative, a fact that follows at once from squaring the [[Frequency_domain|frequency-domain]] multiplier, `(−j·sgn(ω))² = −1` away from ω = 0. Because it is a convolution it commutes with time translation, and because its kernel scales exactly like `1/t` it also commutes with a change of time scale, so transforming a stretched or compressed copy of a signal gives the same stretched or compressed copy of the transform. None of these facts depend on the particular signal; they are facts about the operator itself, which is what makes the single phase dial in the sketch, one angle applied uniformly to every frequency, a faithful stand-in for the whole transform rather than a special case of it. ## Extending the domain of definition For functions too rough for the ordinary integral, the transform still makes sense as an operator on tempered distributions, defined through its action on smooth test functions rather than through the integral directly. At the other extreme, an essentially bounded function need not have a bounded transform; what is guaranteed instead is that the transform lands in the space of functions of bounded mean oscillation, a class just outside `L^infinity` that keeps the theory closed without forcing every input to stay as well behaved as it started, a recurring trade-off in [[Functional_analysis|functional analysis]]. ## Conjugate functions A real function `u` on the boundary of the upper half-plane and its Hilbert transform `H{u}` are, together, the boundary values of a single analytic function: `u + iH{u}` extends into the upper half-plane as a holomorphic function, which is why `H{u}` is called the harmonic conjugate of `u`. Titchmarsh's theorem sharpens this into a characterization rather than a construction, identifying exactly which pairs of boundary functions arise this way in terms of the one-sided vanishing of the extended function's spectrum, and tying the purely real-variable operator back to [[Complex_analysis]]. This is also the setting of the Riemann–Hilbert problem in its classical form: recovering a pair of analytic functions, one inside and one outside a contour, from a prescribed jump relating their boundary values across it, the boundary-value problem in which the transform originated and from which it takes its name. ## Hilbert transform on the circle A parallel theory holds on the unit circle in place of the real line, the natural setting for a periodic signal. There the transform acts term by term on a [[Fourier_series]]: each harmonic `e^{inθ}` is again rotated by ∓90°, so a periodic signal's conjugate series is built exactly like its ordinary Hilbert transform, only summed over the integer harmonics of a fundamental rather than over a continuum of frequencies. This term-by-term, discrete-harmonic version is what underlies the discrete Hilbert transform used on sampled data. ## Hilbert transform in signal processing Adding a signal to j times its own Hilbert transform builds the [[Analytic_signal|analytic signal]] `z(t) = u(t) + jH{u}(t)`, a complex-valued function whose magnitude `|z(t)|` is the signal's instantaneous amplitude, or envelope, and whose unwrapped phase gives an instantaneous frequency by differentiation. This is the standard way to demodulate a signal whose amplitude or frequency carries information without assuming either one is constant, and it is the basis of [[Frequency_modulation|frequency-modulation]] receivers built around a phase or frequency detector rather than a fixed local oscillator. Bedrosian's theorem states a case where the construction stays simple: for a slowly varying envelope multiplying a higher-frequency [[Carrier_wave|carrier]] whose spectra do not overlap, the Hilbert transform of the product is just the envelope times the Hilbert transform of the carrier, so the analytic signal of an [[Amplitude_modulation|amplitude-modulated]] tone can be built without ever transforming the slow part at all.[^bedrosian-orig] The same construction discards half a signal's spectrum on purpose: forming `u(t) + jH{u}(t)` cancels all of the negative-frequency content and doubles the positive, which is exactly the operation single-sideband modulation performs to send a signal in half the bandwidth of ordinary double-sideband transmission. None of this is free in real time: the ideal kernel `1/(πt)` reaches equally into the future and the past, so no causal filter reproduces the transform exactly, and every practical Hilbert transformer is a finite, delayed approximation traded deliberately against how close its phase shift comes to ninety degrees across the band that matters. ## Discrete Hilbert transform On sampled data the transform is normally computed in the frequency domain rather than by discretizing the singular integral directly: take the [[Discrete_Fourier_transform|discrete Fourier transform]] of a finite record, zero out the negative-frequency half of the spectrum, double the remaining positive frequencies while leaving any value at zero frequency and, for an even-length record, at the [[Nyquist_frequency]] alone, and invert. The result is a discrete approximation to the analytic signal, and its imaginary part is the discrete Hilbert transform of the original record. Because the record is finite, the sharp cutoff between positive and negative frequencies is exact only for the frequencies the record actually contains; a signal that is not band-limited within the record's own frequency grid picks up some [[Distortion]] at its edges, the discrete-time price for a transform whose ideal, continuous-time kernel has no edges at all. A finite-impulse-response filter designed to approximate the ∓90° shift over a limited band, rather than the exact frequency-domain construction, is the more common choice inside a real-time system. ## Number-theoretic Hilbert transform A distinct, purely algebraic analogue replaces the transform's complex quarter-turn with an integer construction in a finite field: working modulo a prime chosen so that a primitive root can play the role `−j` plays in the ordinary transform, the same sign-based construction can be carried out with exact integer arithmetic and no rounding at all. The construction is a discrete relative of the transform in name and in structure rather than in any direct numerical agreement with it.[^numtheoretic] ## Microsims This article carries one sketch, built entirely around the ∓90° rule above. **Hilbert transform** represents a test signal as an exact sum of sine and cosine components, so its true Hilbert transform is known in closed form: every component shifted by −90°. A phase dial θ applies any shift the reader chooses to every component at once, drawn alongside the phasor it traces in the complex plane and a live diagnostics readout, and a banner confirms an exact match only at θ = −90°. The same readout reports an energy ratio, ideally 1.000, and an orthogonality inner product, ideally 0.000, updated live as the dial turns. *Try:* Turn the phase dial away from −90° with the arrow keys and watch the energy ratio and the orthogonality readout both drift away from their ideal values. A three.js companion renders the same idea as the quadrature shadow of a rotating phasor, highlighting the ninety-degree shift at every frequency in three dimensions. ## Wikipedia : Wikitube **Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Hilbert_transform) : [Wikitube](https://en.wikitube.io/wiki/Hilbert_transform) Skeleton mirrored at revision 1372023490. Prose, emphasis and the microsims are Wikitube's own. ## See also - [[Analytic_signal]] - [[Fourier_transform]] - [[Fourier_series]] - [[Convolution]] - [[Discrete_Fourier_transform]] - [[Frequency_modulation]] ## Notes The sketch models an idealised phase shifter acting on a finite sum of pure tones; a real, causal Hilbert transformer only approximates the exact ∓90° shift, and only over a limited band, as the Discrete Hilbert transform section describes. ## Page citations Page numbers below are PDF pages of the open textbook editions cited, not necessarily the printed page numbers of any other edition of the same book. ## References [^hilbert-bio]: Citation needed: a primary source (lecture notes, paper, or collected-works volume and page) for David Hilbert's introduction of this construction in connection with the Riemann–Hilbert problem. [^riesz-bound]: Citation needed: a primary citation for Marcel Riesz's theorem establishing L^p-boundedness of the conjugate-function operator for 1 < p < infinity. [^bedrosian-orig]: Citation needed: a primary citation (author, title, venue, year) for the original statement of Bedrosian's theorem on the Hilbert transform of a narrowband product. [^numtheoretic]: Citation needed: a primary citation (author, title, venue, year) for the finite-field, number-theoretic analogue of the Hilbert transform. [^euler-def]: Johnson, D. *Fundamentals of Electrical Engineering I*. 2014, pp. 19, 21 (PDF pages): Euler's formula and a sinusoid as the real part of a rotating phasor. Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/fundamentals-of-electrical-engineering-1 . CC BY. ## Further reading - Christian Tiberius; Max Mulder. *Engineering Signal Analysis: From Fourier to filtering: Theory* (2026). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/engineering-signal-analysis-from-fourier-to-filtering-theory - Don Johnson. *Fundamentals of Electrical Engineering I* (2014). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/fundamentals-of-electrical-engineering-1 - Michael Stiber; Bilin Stiber; Eric Larson. *Signal Computing: Digital Signals in the Software Domain* (2020). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/signal-computing-digital-signals-in-the-software-domain - Steven Ellingson. *Radio Systems Engineering* (2023). Open Textbook Library: https://open.umn.edu/opentextbooks/textbooks/radio-systems-engineering ## External links - Hilbert transform: live sketch https://editor.p5js.org/sciencenibber/full/fCLV-jxvA · editor https://editor.p5js.org/sciencenibber/sketches/fCLV-jxvA <!-- Hubs: Signal_processing. Portals: PORTAL_Signal_Processing. Signal Processing portal wave 1 · 2026-09-17 · drafted. -->