represents the Symlet wavelet of order 4.
represents the Symlet wavelet of order n.
SymletWavelet
represents the Symlet wavelet of order 4.
represents the Symlet wavelet of order n.
Details
- SymletWavelet, also known as "least asymmetric" wavelet, defines a family of orthogonal wavelets.
- SymletWavelet[n] is defined for any positive integer n.
- The scaling function (
) and wavelet function (
) have compact support length of 2n. The scaling function has n vanishing moments. - SymletWavelet can be used with such functions as DiscreteWaveletTransform and WaveletPhi, etc.
Examples
open all close allBasic Examples (3)
Plot[WaveletPhi[SymletWavelet[4], x], {x, 0, 7}]WaveletPhi[SymletWavelet[4], x]Plot[WaveletPsi[SymletWavelet[4], x], {x, -3, 4}, PlotRange -> All]WaveletPsi[SymletWavelet[4], x]WaveletFilterCoefficients[SymletWavelet[2], {"PrimalLowpass", "PrimalHighpass"}]Scope (14)
Basic Uses (8)
Compute primal lowpass filter coefficients:
WaveletFilterCoefficients[SymletWavelet[2], "PrimalLowpass"]Primal highpass filter coefficients:
WaveletFilterCoefficients[SymletWavelet[2], "PrimalHighpass"]WaveletFilterCoefficients[SymletWavelet[2], "LiftingFilter"]%[{"LiftingMatrixForm", z}]Generate a function to compute lifting wavelet transform:
lf = WaveletFilterCoefficients[SymletWavelet[2], "LiftingFilter"]lf["ForwardLiftingFunction"][Range[8]]lf["InverseLiftingFunction"][%]Symlet scaling function of order 4:
Plot[WaveletPhi[SymletWavelet[4], x], {x, 0, 7}]SymletWavelet of order 10:
Plot[WaveletPhi[SymletWavelet[10], x], {x, 0, 19}, PlotRange -> All]Plot scaling function using different levels of recursion:
Table[Plot[WaveletPhi[SymletWavelet[3], x, MaxRecursion -> i], {x, 0, 6}, PlotLabel -> i, PlotRange -> All], {i, 1, 8, 2}]Symlet wavelet function of order 4:
Plot[WaveletPsi[SymletWavelet[4], x], {x, -3, 4}, PlotRange -> All]SymletWavelet of order 10:
Plot[WaveletPsi[SymletWavelet[10], x], {x, -9, 10}, PlotRange -> All]Plot scaling function using different levels of recursion:
Table[Plot[WaveletPsi[SymletWavelet[3], x, MaxRecursion -> i], {x, -2, 3}, PlotLabel -> i, PlotRange -> All], {i, 1, 8, 2}]Wavelet Transforms (5)
Compute a DiscreteWaveletTransform:
data = Table[Sech[t], {t, -3π, 3π, (6π/1023)}];ListLinePlot[data, PlotRange -> All]dwt = DiscreteWaveletTransform[data, SymletWavelet[3], 2]View the tree of wavelet coefficients:
dwt["TreeView"]Get the dimensions of wavelet coefficients:
dwt["Dimensions"]Plot the wavelet coefficients:
WaveletListPlot[dwt, PlotLayout -> "CommonXAxis"]Compute a DiscreteWaveletPacketTransform:
data = Table[Sech[t], {t, -3π, 3π, (6π/1023)}];dwpt = DiscreteWaveletPacketTransform[data, SymletWavelet[4], 2]View the tree of wavelet coefficients:
dwpt["TreeView"]Get the dimensions of wavelet coefficients:
dwpt["Dimensions"]Plot the wavelet coefficients:
WaveletListPlot[dwpt, PlotLayout -> "CommonXAxis"]Compute a StationaryWaveletTransform:
data = Table[Sech[t], {t, -3π, 3π, (6π/1023)}];swt = StationaryWaveletTransform[data, SymletWavelet[4], 2];View the tree of wavelet coefficients:
swt["TreeView"]Get the dimensions of wavelet coefficients:
swt["Dimensions"]Plot the wavelet coefficients:
WaveletListPlot[swt, PlotLayout -> "CommonXAxis"]Compute a StationaryWaveletPacketTransform:
data = Table[Sech[t], {t, -3π, 3π, (6π/1023)}];swpt = StationaryWaveletPacketTransform[data, SymletWavelet[4], 2];View the tree of wavelet coefficients:
swpt["TreeView"]Get the dimensions of wavelet coefficients:
swpt["Dimensions"]Plot the wavelet coefficients:
WaveletListPlot[swpt, PlotLayout -> "CommonXAxis"]Compute a LiftingWaveletTransform:
data = Table[Sech[t], {t, -3π, 3π, (6π/1023)}];lwt = LiftingWaveletTransform[data, DaubechiesWavelet[4], 2];View the tree of wavelet coefficients:
lwt["TreeView"]Get the dimensions of wavelet coefficients:
lwt["Dimensions"]Plot the wavelet coefficients:
WaveletListPlot[lwt, PlotLayout -> "CommonXAxis"]Higher Dimensions (1)
Multivariate scaling and wavelet functions are products of univariate ones:
ϕ = WaveletPhi[SymletWavelet[5]];
ψ = WaveletPsi[SymletWavelet[5]];Plot3D[Evaluate[ϕ[x]ϕ[y]], {x, 0, 9}, {y, 0, 9}, Axes -> None, ColorFunction -> "SolarColors", PlotRange -> All, Mesh -> None]Plot3D[Evaluate[ϕ[x]ψ[y]], {x, 0, 9}, {y, -4, 5}, Axes -> None, ColorFunction -> "SolarColors", PlotRange -> All, Mesh -> None]Plot3D[Evaluate[ψ[x]ϕ[y]], {x, -4, 5}, {y, 0, 9}, Axes -> None, ColorFunction -> "SolarColors", PlotRange -> All, Mesh -> None]Plot3D[Evaluate[ψ[x]ψ[y]], {x, -4, 5}, {y, -4, 5}, Axes -> None, ColorFunction -> "SolarColors", PlotRange -> All, Mesh -> None]Applications (3)
Approximate a function using Haar wavelet coefficients:
data = Table[Abs[Sin[2π x]] + 1.5Abs[Cos[2π x - π]], {x, 0, 1, (1/2^6 - 1)}];Perform a LiftingWaveletTransform:
dwd = LiftingWaveletTransform[data, SymletWavelet[3]];Approximate original data by keeping n largest coefficients and thresholding everything else:
{data8, data16, data32} = Table[InverseWaveletTransform@WaveletThreshold[dwd, {"LargestCoefficients", n}, Automatic], {n, {8, 16, 32}}];Compare the different approximations:
ListLinePlot[{data, data8, data16, data32}, PlotRange -> All]Compute the multiresolution representation of a signal containing an impulse:
data = Table[Sin[4π t] + 2Exp[-10 ^ 5(1 / 3 - t) ^ 2], {t, 0, 1, (1/2^9)}];ListLinePlot[data]dwt = DiscreteWaveletTransform[data, SymletWavelet[3], 4]WaveletListPlot[dwt, {{1}, {0, 1}, {0, 0, 1}, {0, 0, 0}}, PlotLayout -> "CommonXAxis", Method -> {"Inverse" -> True}]Compare the cumulative energy in a signal and its wavelet coefficients:
data = Table[Sin[2π t], {t, 0, 1, 1 / 63}];ListPlot[data]Compute the ordered cumulative energy in the signal:
cumulativeEnergy[data_] := Module[{c = Sort[Flatten[data]^2, Greater]}, Accumulate[c] / Total[c]]ListPlot[cumulativeEnergy[data]]The energy in the signal is captured by relatively few wavelet coefficients:
dwd1 = LiftingWaveletTransform[data, SymletWavelet[3], 1];dwd2 = LiftingWaveletTransform[data, SymletWavelet[3], 2];ListPlot[{cumulativeEnergy[data], cumulativeEnergy[Last /@ dwd1[Automatic]], cumulativeEnergy[Last /@ dwd2[Automatic]]}, PlotStyle -> {Red, Blue, Orange}]Properties & Relations (12)
Order 1 SymletWavelet is equivalent to HaarWavelet:
WaveletFilterCoefficients[HaarWavelet[]] === WaveletFilterCoefficients[SymletWavelet[1]]Lowpass filter coefficients sum to unity;
:
Table[Total[WaveletFilterCoefficients[SymletWavelet[n]][[All, 2]]], {n, 1, 10}]Highpass filter coefficients sum to zero;
:
Table[Total[WaveletFilterCoefficients[SymletWavelet[n], "PrimalHighpass"][[All, 2]]], {n, 1, 10}]//ChopScaling function integrates to unity;
:
ϕ = WaveletPhi[SymletWavelet[4]];Integrate[ϕ[x], {x, -∞, ∞}]Table[NIntegrate[ϕ[x / 2^j], {x, -∞, ∞}, AccuracyGoal -> 4] - 2^j, {j, 0, 3}]Wavelet function integrates to zero;
:
Integrate[WaveletPsi[SymletWavelet[3], x], {x, -∞, ∞}]Wavelet function is orthogonal to the scaling function at the same scale;
:
NIntegrate[WaveletPsi[SymletWavelet[4], x] WaveletPhi[SymletWavelet[4], x], {x, -∞, ∞}, AccuracyGoal -> 4]The lowpass and highpass filter coefficients are orthogonal;
:
Dot[WaveletFilterCoefficients[SymletWavelet[4]][[All, 2]], WaveletFilterCoefficients[SymletWavelet[4], "PrimalHighpass"][[All, 2]]]//ChopOrder n of SymletWavelet indicates n vanishing moments;
:
With[{ψ = WaveletPsi[SymletWavelet[2]]}, Chop[Table[NIntegrate[x^lψ[x], {x, -∞, ∞}, AccuracyGoal -> 5, MaxRecursion -> 0], {l, 0, 4}]]]This means linear signals are fully represented in the scaling functions part ({0}):
dwt = LiftingWaveletTransform[ArrayPad[{1, 2, 3, 4}, 2, "Extrapolated"], SymletWavelet[2], 1, Padding -> 0];Take[InverseWaveletTransform[dwt, Automatic, {0}], 3 ;; -3]Quadratic or higher-order signals are not:
dwt = LiftingWaveletTransform[{1, 4, 9, 16}, SymletWavelet[2], 1]InverseWaveletTransform[dwt, Automatic, {0}]
satisfies the recursion equation
:
ϕ = WaveletPhi[SymletWavelet[4]];a = WaveletFilterCoefficients[SymletWavelet[4], "PrimalLowpass"];Plot the components and the sum of the recursion:
scalet[x_, ϕ_, a_] := 2Table[a[[i, 2]]ϕ[2x - a[[i, 1]]], {i, Length[a]}]{Plot[Evaluate@scalet[x, ϕ, a], {x, 0, 8}, PlotRange -> All],
Plot[Total@scalet[x, ϕ, a], {x, 0, 8}, PlotRange -> All]}
satisfies the recursion equation
:
ϕ = WaveletPhi[SymletWavelet[4]];b = WaveletFilterCoefficients[SymletWavelet[4], "PrimalHighpass"];Plot the components and the sum of the recursion:
wavelet[x_, ϕ_, b_] := 2Table[b[[i, 2]]ϕ[2x - b[[i, 1]]], {i, Length[b]}]{Plot[Evaluate@wavelet[x, ϕ, b], {x, -3, 4}, PlotRange -> All], Plot[Total@wavelet[x, ϕ, b], {x, -3, 4}, PlotRange -> All]}Frequency response for
is given by
:
h[wav_, ω_] := With[{a = WaveletFilterCoefficients[wav]}, Sum[a[[i, 2]]Exp[-I a[[i, 1]]ω], {i, Length[a]}]]The filter is a lowpass filter:
Plot[Abs[h[SymletWavelet[2], ω]], {ω, -π, π}, Ticks -> {{-π, -(π/2), 0, (π/2), π}, Automatic}, AxesLabel -> {ω, Abs[H[ω]]}]The higher the order n, the flatter the response function at the ends:
Plot[{Abs[h[SymletWavelet[2], ω]], Abs[h[SymletWavelet[12], ω]]}, {ω, -π, π}, Ticks -> {{-π, -(π/2), 0, (π/2), π}, Automatic}, AxesLabel -> {ω, Abs[H[ω]]}]Fourier transform of
is given by
:
h[wav_, ω_] := With[{a = WaveletFilterCoefficients[wav]}, Sum[a[[i, 2]]Exp[-I a[[i, 1]]ω], {i, Length[a]}]]fh[wav_, ω_, j_] := Abs[Product[h[wav, (ω/2^i)], {i, j}]]Plot[fh[SymletWavelet[2], ω, 10], {ω, -10Pi, 10Pi}, PlotRange -> All,
AxesLabel -> {ω, Abs[ Overscript[ϕ, ^ ][ω]]}]Frequency response for
is given by
:
g[wav_, ω_] := With[{b = WaveletFilterCoefficients[wav, "PrimalHighpass"]}, Sum[b[[i, 2]]Exp[-I b[[i, 1]]ω], {i, Length[b]}]
]The filter is a highpass filter:
Plot[Abs[g[SymletWavelet[2], ω]], {ω, -π, π}, Ticks -> {{-π, -(π/2), 0, (π/2), π}, Automatic}, AxesLabel -> {ω, Abs[G[ω]]}]The higher the order n, the flatter the response function at the ends:
Plot[{Abs[g[SymletWavelet[2], ω]], Abs[g[SymletWavelet[12], ω]]}, {ω, -π, π}, Ticks -> {{-π, -(π/2), 0, (π/2), π}, Automatic}, AxesLabel -> {ω, Abs[G[ω]]}]Fourier transform of
is given by
:
h[wav_, ω_] := With[{a = WaveletFilterCoefficients[wav]}, Sum[a[[i, 2]]Exp[-I a[[i, 1]]ω], {i, Length[a]}]]g[wav_, ω_] := With[{b = WaveletFilterCoefficients[wav, "PrimalHighpass"]}, Sum[b[[i, 2]]Exp[-I b[[i, 1]]ω], {i, Length[b]}]
]fg[wav_, ω_, j_] := Abs[g[wav, (ω/2)]Product[h[wav, (ω/2^i)], {i, 2, j}]]Plot[fg[SymletWavelet[2], ω, 10], {ω, -10Pi, 10Pi}, PlotRange -> All,
AxesLabel -> {ω, Abs[ Overscript[ψ, ^ ][ω]]}]Possible Issues (1)
SymletWavelet is restricted to n less than 20:
WaveletPhi[SymletWavelet[25]]SymletWavelet is not defined when n is not a positive machine integer:
WaveletPhi[SymletWavelet[10 + I]]Neat Examples (2)
Plot translates and dilations of scaling function:
ϕ[x_, j_, k_] := 2^j / 2WaveletPhi[SymletWavelet[4], 2^jx - k]Plot[Evaluate@Table[ϕ[x, j, 0], {j, 0, 4}], {x, 0, 2}, Filling -> Axis, PlotRange -> All]Plot[Evaluate@Table[ϕ[x, 2, k], {k, 0, 2^2 - 1}], {x, 0, 2}, Filling -> Axis, PlotRange -> All]Plot translates and dilations of wavelet function:
ψ[x_, j_, k_] := 2^j / 2WaveletPsi[SymletWavelet[4], 2^jx - k]Plot[Evaluate@Table[ψ[x, j, 0], {j, 0, 4}], {x, 0, 1}, Filling -> Axis, PlotRange -> All]Plot[Evaluate@Table[ψ[x, 2, k], {k, 0, 2^2 - 1}], {x, -0.5, 1.5}, Filling -> Axis, PlotRange -> All]Tech Notes
Related Guides
History
Text
Wolfram Research (2010), SymletWavelet, Wolfram Language function, https://reference.wolfram.com/language/ref/SymletWavelet.html.
CMS
Wolfram Language. 2010. "SymletWavelet." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/SymletWavelet.html.
APA
Wolfram Language. (2010). SymletWavelet. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SymletWavelet.html
BibTeX
@misc{reference.wolfram_2026_symletwavelet, author="Wolfram Research", title="{SymletWavelet}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/SymletWavelet.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_symletwavelet, organization={Wolfram Research}, title={SymletWavelet}, year={2010}, url={https://reference.wolfram.com/language/ref/SymletWavelet.html}, note=[Accessed: 13-June-2026]}