HilbertTransform[f[t],t,s]
gives the symbolic Hilbert transform of f[t] in the variable t and returns a transform F[s] in the variable s.
HilbertTransform[f[t],t,
]
gives the numeric Hilbert transform at the numerical value
.
HilbertTransform
HilbertTransform[f[t],t,s]
gives the symbolic Hilbert transform of f[t] in the variable t and returns a transform F[s] in the variable s.
HilbertTransform[f[t],t,
]
gives the numeric Hilbert transform at the numerical value
.
Details and Options
- Hilbert transforms are used to solve problems in signal processing, communications and other fields.
- The Hilbert transform of a function
is defined to be principal value integral
. - HilbertTransform shifts every frequency component of a function by a phase of
radians. -
- The conjugate function
is the analytic representation of
, and its magnitude is the envelope: - HilbertTransform is a singular integral transform. Moreover, it is a bounded operator on
for
. - The integral is computed using numerical methods if the third argument,
, is given a numerical value. - The following options can be given:
-
AccuracyGoal Automatic digits of absolute accuracy sought Assumptions $Assumptions assumptions to make about parameters GenerateConditions Automatic whether to generate answers that involve conditions on parameters Method Automatic method to use PrecisionGoal Automatic digits of precision sought WorkingPrecision Automatic the precision used in internal computations
Examples
open all close allBasic Examples (4)
Compute the Hilbert transform of a function:
HilbertTransform[Sin[t], t, s]Plot the function and its Hilbert transform:
{Plot[Sin[t], {t, -2Pi, 2Pi}], Plot[%, {s, -2Pi, 2Pi}]}HilbertTransform[DiracDelta[t], t, s]Hilbert transform of a Cauchy pulse:
HilbertTransform[1 / (1 ^ 2 + t ^ 2), t, s]{Plot[1 / (1 ^ 2 + t ^ 2), {t, -5, 5}], Plot[%, {s, -5, 5}]}Compute the transform at a single point:
HilbertTransform[Cos[t] - Sin[t], t, 1.3]Scope (29)
Basic Uses (4)
Hilbert transform of a function for a symbolic parameter
:
HilbertTransform[Exp[2 I t], t, s]Hilbert transforms of simple trigonometric functions:
HilbertTransform[Sin[α t], t, s, Assumptions -> α > 0]HilbertTransform[Cos[α t], t, s, Assumptions -> α < 0]Evaluate the Hilbert transform for a numerical value of the parameter
:
HilbertTransform[UnitBox[t], t, 0.3]TraditionalForm formatting:
HilbertTransform[f[t], t, s]//TraditionalFormElementary Functions (5)
HilbertTransform[Piecewise[{{1 - t ^ 2, Abs[t] <= 1}, {0, Abs[t] > 1}}], t, t]Plot[{Piecewise[{{1 - t ^ 2, Abs[t] <= 1}, {0, Abs[t] > 1}}], %}, ...]HilbertTransform[UnitBox[t], t, t]Plot[{UnitBox[t], %}, {t, -2, 2}, ...]HilbertTransform[UnitBox[t]Sign[t], t, t]Plot[{UnitBox[t]Sign[t], %}, {t, -2, 2}, ...]HilbertTransform[t UnitBox[t]Sign[t], t, t]Plot[{t UnitBox[t]Sign[t], %}, {t, -2, 2}, ...]HilbertTransform[UnitBox[t - 1 / 2], t, t]Plot[{UnitBox[t - 1 / 2], %}, {t, -5, 5}, ...]Trigonometric Functions (4)
Quotient of trigonometric and linear functions:
HilbertTransform[Sin[3 t] / t, t, t]Plot[{Sin[3 t] / t, %}, {t, -2, 2}]HilbertTransform[Cos[-4 t] / t, t, t]Plot[{Cos[-4 t] / t, %}, {t, -2, 2}]Quotient of trigonometric and monomial functions:
HilbertTransform[Sin[a t] / t ^ 2, t, s, Assumptions -> a > 0]HilbertTransform[Cos[a t] ^ 3, t, s, Assumptions -> a > 0]HilbertTransform[Cos[a t] ^ 5, t, s, Assumptions -> a > 0]HilbertTransform[Cos[α t + ϕ] Cos[β t + Φ], t, s, Assumptions -> 0 < α < β]Composition of elementary functions:
HilbertTransform[Sin[t ^ 2], t, t]Plot[{Sin[t ^ 2], %}, {t, -5, 5}]Powers and Algebraic Functions (5)
Rational functions with linear denominator:
HilbertTransform[1 / t, t, s]HilbertTransform[(t - I) ^ (-1), t, s, Assumptions -> Im[a] < 0]Rational functions with quadratic denominators:
HilbertTransform[t / (t ^ 2 + a ^ 2), t, s, Assumptions -> Re[a] > 0]HilbertTransform[(b t + c) / (t ^ 2 + a ^ 2), t, s, Assumptions -> Re[a] > 0]Monomial expression with negative power:
HilbertTransform[1 / t ^ 3, t, s]Rational functions with quartic denominators:
HilbertTransform[t / (t ^ 2 + a ^ 2) ^ 2, t, s, Assumptions -> a > 0]HilbertTransform[1 / (t ^ 2 + a ^ 2) ^ 2, t, s, Assumptions -> a > 0]HilbertTransform[t ^ 3 / (t ^ 2 + a ^ 2) ^ 2, t, s, Assumptions -> a > 0]HilbertTransform[t / (t ^ 2 + a ^ 2) ^ 3, t, s, Assumptions -> a > 0]HilbertTransform[1 / Sqrt[t ^ 2 + a ^ 2], t, s, Assumptions -> a > 0]Generalized Functions (3)
DiracDelta of linear arguments.
HilbertTransform[DiracDelta[t], t, s]HilbertTransform[DiracDelta[t + a], t, s]HilbertTransform[DiracDelta[a t + b], t, s]Derivatives of DiracDelta:
HilbertTransform[DiracDelta'[t], t, s]HilbertTransform[D[DiracDelta[t], {t, 3}], t, s]HilbertTransform[D[DiracDelta[t], {t, 6}], t, s]Sign function:
HilbertTransform[Sign[t], t, t]Plot[{Sign[t], %}, {t, -5, 5}]Exponential and Logarithmic Functions (4)
HilbertTransform[Exp[I a t] / t, t, s]HilbertTransform[Exp[I / t], t, s]HilbertTransform[Exp[-π t ^ 2], t, t]Plot[{Exp[-π t ^ 2], %}, {t, -2, 2}]HilbertTransform[Exp[-a Abs[t]], t, t, Assumptions -> a > 0]Plot[{Exp[-a Abs[t]] /. a -> 2, % /. a -> 2}, {t, -2, 2}]Composition of a logarithmic function and a polynomial of order 2:
HilbertTransform[Log[9 + 4t ^ 2], t, s]Special Functions (2)
HilbertTransform[LegendreP[3, Cos[t]], t, s]HilbertTransform[LegendreP[5, Sin[t]], t, s]//FullSimplifyHilbertTransform[HermiteH[0, t]Exp[-t ^ 2], t, s]HilbertTransform[HermiteH[5, t]Exp[-t ^ 2], t, s]//FullSimplifyHilbertTransform[HermiteH[8, t]Exp[-t ^ 2], t, s]//FullSimplifyFormal Properties (1)
Numerical Evaluation (1)
Calculate the Hilbert transform at a single point:
HilbertTransform[(t/t ^ 2 + 9), t, -.9]Alternatively, calculate the Hilbert transform symbolically:
HilbertTransform[(t/t ^ 2 + 9), t, s]Then evaluate it for the specific value of
:
N[% /. s -> -.9]Options (5)
AccuracyGoal (1)
The option AccuracyGoal sets the number of digits of accuracy:
exact = HilbertTransform[t / (t ^ 2 + 1), t, -9 / 10]HilbertTransform[t / (t ^ 2 + 1), t, -.9, AccuracyGoal -> 5] - exactHilbertTransform[t / (t ^ 2 + 1), t, -.9] - exactAssumptions (1)
Specify the range of a variable using Assumptions:
HilbertTransform[Sin[a t] * Cos[b t], t, s, Assumptions -> 0 < a < b ]HilbertTransform[Sin[a t] * Cos[b t], t, s, Assumptions -> 0 < b < a ]HilbertTransform[Sin[a t] * Cos[b t], t, s, Assumptions -> 0 < a == b ]GenerateConditions (1)
Use GenerateConditionsTrue to get parameter conditions for when a result is valid:
HilbertTransform[DiracDelta[a t + b], t, s, GenerateConditions -> True]PrecisionGoal (1)
The option PrecisionGoal sets the relative tolerance in the integration:
exact = HilbertTransform[8 / (t ^ 2 + 1), t, 1 / 2]HilbertTransform[8 / (t ^ 2 + 1), t, .5, PrecisionGoal -> 1] - exactHilbertTransform[8 / (t ^ 2 + 1), t, .5] - exactWorkingPrecision (1)
If WorkingPrecision is specified, the computation is done at that working precision:
exact = HilbertTransform[8 / (t ^ 2 + 1), t, 1 / 2]HilbertTransform[8 / (t ^ 2 + 1), t, .5, WorkingPrecision -> 40] - exactHilbertTransform[8 / (t ^ 2 + 1), t, .5] - exactApplications (5)
Basic Applications (1)
f[t_] = 5 Sin[t];HilbertTransform applies a
-degree phase shift:
F[t_] = HilbertTransform[f[t], t, t]Plot[{f[t], F[t]}, {t, -Pi, Pi}, ...]Signals and Systems (2)
The Hilbert filter is defined below. It preserves the magnitude of the signal and phase shifts by
for positive frequencies and
for negative frequencies:
H[ω_] := -I Sign[ω];
Plot[{Abs@H[ω], Arg@H[ω]}, {ω, -10, 10}, ...]The impulse response is the inverse Fourier transform of
:
InverseFourierTransform[H[ω], ω, t, FourierParameters -> {0, -2Pi}]Plot[%, {t, -4, 4}, PlotRange -> All]HilbertTransform[DiracDelta[t], t, t]InverseFourierTransform[H[ω] FourierTransform[UnitStep[t], t, ω, FourierParameters -> {0, -2 π}], ω, t, FourierParameters -> {0, -2 π}]Plot[{Abs@%, Arg@%}, {t, -10, 10}, PlotRange -> {-3, 2}, ...]In signal processing, the Hilbert transform provides the imaginary component of the analytic representation of a real-valued signal
:
u[t_] := Cos[2t + 3] + 2Cos[3t + 2];
Plot[u[t], {t, 0, 9}]U[t_] = HilbertTransform[u[t], t, t]The analytic representation is:
f[t_] = u[t] + I * U[t]The envelope of an oscillating signal is a smooth curve outlining its extremes, and it is the magnitude of the analytic representation:
Plot[{u[t], U[t], Abs[f[t]]}, {t, 0, 9}, Rule[...]]Bedrosian's Theorem (1)
Suppose
and
have Fourier transforms
and
, respectively, where
for
with
and
for
. Then
.
f[t_] := Cos[t / 2];
g[t_] := Cos[10t];Verify the Fourier transform condition:
Refine[FourierTransform[f[t], t, ω], ω > 0]Refine[FourierTransform[g[t], t, ω], ω > 0]
has a single spike at
, while
has a single spike at
:
ListPlot[{{{(1/2), Sqrt[2 π]}}, {{10, Sqrt[(π/2)]}}}, ...]Any
in between will suffice the hypothesis. Verify Bedrosian's theorem:
HilbertTransform[f[t] * g[t], t, t]Only the highpass signal needs to be transformed:
f[t] * HilbertTransform[g[t], t, t]FullSimplify[% == %%]Communications (1)
m[t_] = (Cos[2Pi 5 t] + 2Cos[2Pi 7 t] + 1 / 2Cos[2 Pi 9 t]);
Plot[m[t], {t, -Pi / 2, Pi / 2}, ...]x[ω_] = FourierTransform[m[t], t, ω, FourierParameters -> {0, -2 * Pi}]This provides the power spectrum:
ListPlot[{{-9, (1/4)}, {-7, 1}, {-5, (1/2)}, {5, (1/2)}, {7, 1}, {9, (1/4)}}, ...]Find the Hilbert transform of the message signal:
Hm[s_] = HilbertTransform[m[t], t, s]Plot[Hm[t], {t, -Pi / 2, Pi / 2}, ...]The power spectrum for the complex signal has only positive frequencies:
FourierTransform[m[t] + I Hm[t], t, ω, FourierParameters -> {0, -2 * Pi}]ListPlot[{{9, (1/2)}, {7, 2}, {5, 1}}, ...]Using
as a message carrier, get the upper side band-suppressed carrier (USB-SC) and lower side band-suppressed carrier (LSB-SC):
USB[s_] = m[s]Cos[2Pi 35 s] - Hm[s]Sin[2 Pi 35 s];
LSB[s_] = m[s]Cos[2 Pi 35 s] + Hm[s]Sin[2 Pi 35 s];Plot[{USB[t], LSB[t]}, ...]FourierTransform[{USB[t], LSB[t]}, t, ω, FourierParameters -> {0, -2 * Pi}]They provide the power spectrum for both signals:
ListPlot[{...}, AxesLabel -> {"Frequency", "Power"}, ...]Properties & Relations (7)
For
, the definite integral for HilbertTransform becomes:
1 / π * Integrate[Exp[-t ^ 2] / (s - t), {t, -∞, ∞}, PrincipalValue -> True]Compare with HilbertTransform:
HilbertTransform[Exp[-t ^ 2], t, s]HilbertTransform[a f[t] + b g[t], t, s]HilbertTransform[f[t + a], t, s]HilbertTransform[f[a t], t, s]HilbertTransform[f[-t], t, s]Hilbert transform of a Hilbert transform:
HilbertTransform[HilbertTransform[f[t], t, s], s, t]HilbertTransform and InverseHilbertTransform are mutual inverses:
InverseHilbertTransform[HilbertTransform[f[t], t, s], s, t]HilbertTransform[InverseHilbertTransform[F[ t], t, s], s, t]HilbertTransform[1 / (t ^ 2 + 1), t, s]InverseHilbertTransform[%, s, t]Possible Issues (1)
Interactive Examples (1)
In seismic data processing, important attributes can be obtained from the complex trace. For a seismic trace, compute its Hilbert transform:
u[t_] = Sin[2t + 3] + 2Sin[3t + 2] + 3Cos[2t + 3];
U[s_] = HilbertTransform[u[t], t, s];The analytic representation is the complex trace
:
Manipulate[Show[...], {t, .0001, 6Pi}, Rule[...]]Env[t_] = (u[t] ^ 2 + U[t] ^ 2) ^ (1 / 2)//FullSimplifyThe envelope with its highest peaks marked:
Module[{...},
CompoundExpression[...];
Plot[{u[t], U[t], Env[t], -Env[t]}, ...]]The instantaneous angular frequency is:
D[ArcTan[u[t], U[t]], t]//FullSimplify
Plot[%, {t, 0, 6π}]Neat Examples (1)
Related Guides
History
Text
Wolfram Research (2025), HilbertTransform, Wolfram Language function, https://reference.wolfram.com/language/ref/HilbertTransform.html.
CMS
Wolfram Language. 2025. "HilbertTransform." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/HilbertTransform.html.
APA
Wolfram Language. (2025). HilbertTransform. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/HilbertTransform.html
BibTeX
@misc{reference.wolfram_2026_hilberttransform, author="Wolfram Research", title="{HilbertTransform}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/HilbertTransform.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_hilberttransform, organization={Wolfram Research}, title={HilbertTransform}, year={2025}, url={https://reference.wolfram.com/language/ref/HilbertTransform.html}, note=[Accessed: 13-June-2026]}