DiscreteWaveletTransform
✖
DiscreteWaveletTransform
gives the discrete wavelet transform using r levels of refinement.
Details and Options



- DiscreteWaveletTransform gives a DiscreteWaveletData object representing a tree of wavelet coefficient arrays.
- Properties of the DiscreteWaveletData dwd can be found using dwd["prop"], and a list of available properties can be found using dwd["Properties"].
- The data can be any of the following:
-
list arbitrary-rank numerical array image arbitrary Image object audio an Audio or sampled Sound object - The resulting wavelet coefficients are arrays of the same depth as the input data.
- The possible wavelets wave include:
-
BattleLemarieWavelet[…] Battle–Lemarié wavelets based on B-spline BiorthogonalSplineWavelet[…] B-spline-based wavelet CoifletWavelet[…] symmetric variant of Daubechies wavelets DaubechiesWavelet[…] the Daubechies wavelets HaarWavelet[…] classic Haar wavelet MeyerWavelet[…] wavelet defined in the frequency domain ReverseBiorthogonalSplineWavelet[…] B-spline-based wavelet (reverse dual and primal) ShannonWavelet[…] sinc function-based wavelet SymletWavelet[…] least asymmetric orthogonal wavelet - The default wave is HaarWavelet[].
- With higher settings for the refinement level r, larger-scale features are resolved.
- The default refinement level r is given by
, where
is the minimum dimension of data. »
- The tree of wavelet coefficients at level
consists of coarse coefficients
and detail coefficients
, with
representing the input data.
- The forward transform is given by
and
. »
- The inverse transform is given by
. »
- The
are lowpass filter coefficients and
are highpass filter coefficients that are defined for each wavelet family.
- The dimensions of
and
are given by
, where
is the input data dimension and fl is the filter length for the corresponding wspec. »
- The following options can be given:
-
Method Automatic method to use Padding "Periodic" how to extend data beyond boundaries WorkingPrecision MachinePrecision precision to use in internal computations - The settings for Padding are the same as those available in ArrayPad.
- InverseWaveletTransform gives the inverse transform.

Examples
open allclose allBasic Examples (3)Summary of the most common use cases
Compute a discrete wavelet transform using the HaarWavelet:

https://wolfram.com/xid/0d4ktomcm5gltdhu-zjig9d

Use Normal to view all coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-s766la


https://wolfram.com/xid/0d4ktomcm5gltdhu-c4c4hc


https://wolfram.com/xid/0d4ktomcm5gltdhu-i79gyn

Use dwd[…,"Audio"] to extract coefficient signals:

https://wolfram.com/xid/0d4ktomcm5gltdhu-bxhoqo

Compute the inverse transform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-ds1g1n

Transform an Image object:

https://wolfram.com/xid/0d4ktomcm5gltdhu-jza1au

Use dwd[…,"Image"] to extract coefficient images:

https://wolfram.com/xid/0d4ktomcm5gltdhu-lg7vnk

Compute the inverse transform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-xasr81

Scope (36)Survey of the scope of standard use cases
Basic Uses (6)

https://wolfram.com/xid/0d4ktomcm5gltdhu-h8yn3f

The resulting DiscreteWaveletData represents a tree of transform coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-hic6us

The inverse transform reconstructs the input:

https://wolfram.com/xid/0d4ktomcm5gltdhu-f3afir

Useful properties can be extracted from the DiscreteWaveletData object:

https://wolfram.com/xid/0d4ktomcm5gltdhu-f5g3t

Get a full list of properties:

https://wolfram.com/xid/0d4ktomcm5gltdhu-che078

Get data and coefficient dimensions:

https://wolfram.com/xid/0d4ktomcm5gltdhu-svmo5


https://wolfram.com/xid/0d4ktomcm5gltdhu-dtl7ea

Use Normal to get all wavelet coefficients explicitly:

https://wolfram.com/xid/0d4ktomcm5gltdhu-4pudeo

https://wolfram.com/xid/0d4ktomcm5gltdhu-pngz6t

Also use All as an argument to get all coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-fy98zc

Use Automatic to get only the coefficients used in the inverse transform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-o4zzzw

Use the "TreeView" or "WaveletIndex" to find out what wavelet coefficients are available:

https://wolfram.com/xid/0d4ktomcm5gltdhu-8z5pdm

https://wolfram.com/xid/0d4ktomcm5gltdhu-7vy1zr


https://wolfram.com/xid/0d4ktomcm5gltdhu-dbjopc

Extract specific coefficient arrays:

https://wolfram.com/xid/0d4ktomcm5gltdhu-limxd1


https://wolfram.com/xid/0d4ktomcm5gltdhu-ukcyo5

Extract several wavelet coefficients corresponding to the list of wavelet index specifications:

https://wolfram.com/xid/0d4ktomcm5gltdhu-bw6a2j

Extract all coefficients whose wavelet indexes match a pattern:

https://wolfram.com/xid/0d4ktomcm5gltdhu-57sk78


https://wolfram.com/xid/0d4ktomcm5gltdhu-u5etdi

The Automatic coefficients are used by default in functions like WaveletListPlot:

https://wolfram.com/xid/0d4ktomcm5gltdhu-c115g

https://wolfram.com/xid/0d4ktomcm5gltdhu-b2d2ce


https://wolfram.com/xid/0d4ktomcm5gltdhu-lb6dy9

Use a higher refinement level to increase the frequency resolution:

https://wolfram.com/xid/0d4ktomcm5gltdhu-e0tfo1

https://wolfram.com/xid/0d4ktomcm5gltdhu-d8rad6

With a smaller refinement level, more signal energy is left in {0,0,0}:

https://wolfram.com/xid/0d4ktomcm5gltdhu-qhxfy

https://wolfram.com/xid/0d4ktomcm5gltdhu-b7oh62

With further refinement, {0,0,0} is resolved into further components:

https://wolfram.com/xid/0d4ktomcm5gltdhu-pcyr03

https://wolfram.com/xid/0d4ktomcm5gltdhu-ox23n

Wavelet Families (10)
Compute the discrete wavelet transform using different wavelet families:

https://wolfram.com/xid/0d4ktomcm5gltdhu-gavf2f

https://wolfram.com/xid/0d4ktomcm5gltdhu-b3h8vd

https://wolfram.com/xid/0d4ktomcm5gltdhu-lu64r

Use different families of wavelets to capture different features:

https://wolfram.com/xid/0d4ktomcm5gltdhu-xux3yw

https://wolfram.com/xid/0d4ktomcm5gltdhu-6jwo5u

HaarWavelet (default):

https://wolfram.com/xid/0d4ktomcm5gltdhu-nm4160

https://wolfram.com/xid/0d4ktomcm5gltdhu-7up01x


https://wolfram.com/xid/0d4ktomcm5gltdhu-022m3l

https://wolfram.com/xid/0d4ktomcm5gltdhu-5guii

https://wolfram.com/xid/0d4ktomcm5gltdhu-588xab


https://wolfram.com/xid/0d4ktomcm5gltdhu-64i349

https://wolfram.com/xid/0d4ktomcm5gltdhu-8g8wur

https://wolfram.com/xid/0d4ktomcm5gltdhu-myg47y


https://wolfram.com/xid/0d4ktomcm5gltdhu-874w84

https://wolfram.com/xid/0d4ktomcm5gltdhu-3itphu

https://wolfram.com/xid/0d4ktomcm5gltdhu-7q8w5p


https://wolfram.com/xid/0d4ktomcm5gltdhu-klv9q6

https://wolfram.com/xid/0d4ktomcm5gltdhu-7eaj36

https://wolfram.com/xid/0d4ktomcm5gltdhu-kmt3r3


https://wolfram.com/xid/0d4ktomcm5gltdhu-q6etlg

https://wolfram.com/xid/0d4ktomcm5gltdhu-9nicex

https://wolfram.com/xid/0d4ktomcm5gltdhu-6c9di7

ReverseBiorthogonalSplineWavelet:

https://wolfram.com/xid/0d4ktomcm5gltdhu-fs79sv

https://wolfram.com/xid/0d4ktomcm5gltdhu-gmiqe8

https://wolfram.com/xid/0d4ktomcm5gltdhu-hthxz8


https://wolfram.com/xid/0d4ktomcm5gltdhu-ntfv84

https://wolfram.com/xid/0d4ktomcm5gltdhu-2ydklr

https://wolfram.com/xid/0d4ktomcm5gltdhu-fe4q6k


https://wolfram.com/xid/0d4ktomcm5gltdhu-l4xlsf

https://wolfram.com/xid/0d4ktomcm5gltdhu-ovf86t

https://wolfram.com/xid/0d4ktomcm5gltdhu-qly5se

Vector Data (6)
Plot the coefficients over a common horizontal axis using WaveletListPlot:

https://wolfram.com/xid/0d4ktomcm5gltdhu-gypdz4

https://wolfram.com/xid/0d4ktomcm5gltdhu-xm5ld4

Plot against a common vertical axis:

https://wolfram.com/xid/0d4ktomcm5gltdhu-ez6l51

Visualize coefficients as a function of time and refinement level using WaveletScalogram:

https://wolfram.com/xid/0d4ktomcm5gltdhu-c1j4n5
The coefficient indexes appear as tooltips when the mouse pointer is moved over a coefficient:

https://wolfram.com/xid/0d4ktomcm5gltdhu-di3ww


https://wolfram.com/xid/0d4ktomcm5gltdhu-i9a5e9

https://wolfram.com/xid/0d4ktomcm5gltdhu-kwq8bn

All coefficients are small except coarse coefficients {0,0,…}:

https://wolfram.com/xid/0d4ktomcm5gltdhu-bfxyna

https://wolfram.com/xid/0d4ktomcm5gltdhu-lji86v

Data oscillating at the highest resolvable frequency (Nyquist frequency):

https://wolfram.com/xid/0d4ktomcm5gltdhu-c7n0wl

https://wolfram.com/xid/0d4ktomcm5gltdhu-ne0a67

Only the first detail coefficient {1} is not small:

https://wolfram.com/xid/0d4ktomcm5gltdhu-cxc4yt

https://wolfram.com/xid/0d4ktomcm5gltdhu-nyp7xn

Data with large discontinuities:

https://wolfram.com/xid/0d4ktomcm5gltdhu-gl9hci

https://wolfram.com/xid/0d4ktomcm5gltdhu-fp30

Coarse coefficients {0,…} have the same large-scale structure as the data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-fqn4ul

https://wolfram.com/xid/0d4ktomcm5gltdhu-g46hdy

Detail coefficients are sensitive to discontinuities:

https://wolfram.com/xid/0d4ktomcm5gltdhu-bi93r6

Data with both spatial and frequency structure:

https://wolfram.com/xid/0d4ktomcm5gltdhu-qcsku6

https://wolfram.com/xid/0d4ktomcm5gltdhu-c0drk1

Coarse coefficients {0,…} track the local mean of the data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-dot1jc

https://wolfram.com/xid/0d4ktomcm5gltdhu-imnl1l

The first detail coefficient identifies the oscillatory region:

https://wolfram.com/xid/0d4ktomcm5gltdhu-72xvt

All coefficients on a common vertical axis:

https://wolfram.com/xid/0d4ktomcm5gltdhu-cu61t

Matrix Data (5)
Compute a two-dimensional discrete wavelet transform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-gflx0m

View the tree of wavelet coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-q2twv6

Inverse transform to get back the original signal:

https://wolfram.com/xid/0d4ktomcm5gltdhu-xz2n41

Use WaveletMatrixPlot to visualize the different wavelet coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-tj6pke


https://wolfram.com/xid/0d4ktomcm5gltdhu-svtxpu

WaveletMatrixPlot of wavelet transform at a higher refinement level:

https://wolfram.com/xid/0d4ktomcm5gltdhu-e9wf0j

In two dimensions, the vector of filtering operations in each direction can be computed:

https://wolfram.com/xid/0d4ktomcm5gltdhu-lhs0ib

Interpreting these vectors as binary digit expansions results in wavelet index numbers:

https://wolfram.com/xid/0d4ktomcm5gltdhu-e2sxk5

Get the lowpass and highpass filters for a Haar wavelet:

https://wolfram.com/xid/0d4ktomcm5gltdhu-lhi79n

The resulting 2D filters are outer products of filters in the two directions:

https://wolfram.com/xid/0d4ktomcm5gltdhu-dc3ief


https://wolfram.com/xid/0d4ktomcm5gltdhu-ljd94e

Wavelet transform of step data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-hfdje4
Data with a vertical discontinuity:

https://wolfram.com/xid/0d4ktomcm5gltdhu-n155zh

Only the vertical detail coefficients, wavelet index {…,1}, are nonzero:

https://wolfram.com/xid/0d4ktomcm5gltdhu-zxwe7i

Data with horizontal discontinuity:

https://wolfram.com/xid/0d4ktomcm5gltdhu-yv487p

Only the horizontal detail coefficients, wavelet index {…,2}, are nonzero:

https://wolfram.com/xid/0d4ktomcm5gltdhu-basqcr

Data with diagonal discontinuity:

https://wolfram.com/xid/0d4ktomcm5gltdhu-mlwx9y

Only the diagonal detail coefficients, wavelet index {…,3}, are nonzero:

https://wolfram.com/xid/0d4ktomcm5gltdhu-xo9kch

Array Data (2)
Compute a three-dimensional discrete wavelet transform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-wgoboy

https://wolfram.com/xid/0d4ktomcm5gltdhu-f8249l

Tree view of all coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-0ek2ai

Inverse transform to get back the original signal:

https://wolfram.com/xid/0d4ktomcm5gltdhu-gsidhc

Wavelet transform of a three-dimensional cross array:

https://wolfram.com/xid/0d4ktomcm5gltdhu-q65ymx

https://wolfram.com/xid/0d4ktomcm5gltdhu-6gkgva


https://wolfram.com/xid/0d4ktomcm5gltdhu-sxjayp

Visualize wavelet coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-gzdpgu

Energy of the original data is conserved within the transformed coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-57obwt

Image Data (4)
Transform an Image object:

https://wolfram.com/xid/0d4ktomcm5gltdhu-gmw99b


https://wolfram.com/xid/0d4ktomcm5gltdhu-yzn8qe

The inverse transform yields a reconstructed Image object:

https://wolfram.com/xid/0d4ktomcm5gltdhu-xlen9k

Wavelet coefficients are normally given as lists of data for each image channel:

https://wolfram.com/xid/0d4ktomcm5gltdhu-79t4z

https://wolfram.com/xid/0d4ktomcm5gltdhu-lmi7qq

Get all coefficients as Image objects instead:

https://wolfram.com/xid/0d4ktomcm5gltdhu-9oty5

Get raw Image objects with no rescaling of color levels:

https://wolfram.com/xid/0d4ktomcm5gltdhu-ctsnnz

Get the inverse transform of the {0,1} coefficient as an Image object:

https://wolfram.com/xid/0d4ktomcm5gltdhu-hbdon

Plot coefficients used in the inverse transform in a hierarchical grid using WaveletImagePlot:

https://wolfram.com/xid/0d4ktomcm5gltdhu-ec85oe

https://wolfram.com/xid/0d4ktomcm5gltdhu-bxf3qx

Image wavelet coefficients lie outside the valid range of ImageType:

https://wolfram.com/xid/0d4ktomcm5gltdhu-cwmmu5

https://wolfram.com/xid/0d4ktomcm5gltdhu-vxwb7m
"ImageFunction"->Identity gives an unnormalized image wavelet coefficient:

https://wolfram.com/xid/0d4ktomcm5gltdhu-ip2hqy

https://wolfram.com/xid/0d4ktomcm5gltdhu-gb5d3c
The color channels lie outside its valid 0 to 1 range:

https://wolfram.com/xid/0d4ktomcm5gltdhu-hvl40e

By default, "ImageFunction"->ImageAdjust is used to normalize coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-e6nuz0

https://wolfram.com/xid/0d4ktomcm5gltdhu-b96e38
The color channels are now within the valid 0 to 1 range:

https://wolfram.com/xid/0d4ktomcm5gltdhu-vns9un

Sound Data (3)
Transform a Sound object:

https://wolfram.com/xid/0d4ktomcm5gltdhu-mineo


https://wolfram.com/xid/0d4ktomcm5gltdhu-jtcd5x

The inverse transform yields a reconstructed Sound object:

https://wolfram.com/xid/0d4ktomcm5gltdhu-jx08w

By default, coefficients are given as lists of data for each sound channel:

https://wolfram.com/xid/0d4ktomcm5gltdhu-bj4f7m

https://wolfram.com/xid/0d4ktomcm5gltdhu-kp8pm

Get the {0,1} coefficient as a Sound object:

https://wolfram.com/xid/0d4ktomcm5gltdhu-hqd4o6

Inverse transform of {0,0,1} coefficient as a Sound object:

https://wolfram.com/xid/0d4ktomcm5gltdhu-d4evuw

Browse all coefficients using a MenuView:

https://wolfram.com/xid/0d4ktomcm5gltdhu-jhcy39

https://wolfram.com/xid/0d4ktomcm5gltdhu-c9wmlc

Generalizations & Extensions (3)Generalized and extended use cases
DiscreteWaveletTransform works on arrays of symbolic quantities:

https://wolfram.com/xid/0d4ktomcm5gltdhu-iue08m

https://wolfram.com/xid/0d4ktomcm5gltdhu-cqhoa

Inverse transform recovers the input exactly:

https://wolfram.com/xid/0d4ktomcm5gltdhu-zu4y

Specify any internal working precision:

https://wolfram.com/xid/0d4ktomcm5gltdhu-daoo2p

https://wolfram.com/xid/0d4ktomcm5gltdhu-hlsinj


https://wolfram.com/xid/0d4ktomcm5gltdhu-noliik

https://wolfram.com/xid/0d4ktomcm5gltdhu-bmqscn

The wavelet coefficients are complex:

https://wolfram.com/xid/0d4ktomcm5gltdhu-pma2rw

Inverse transform recovers the input:

https://wolfram.com/xid/0d4ktomcm5gltdhu-l82pnk

Options (5)Common values & functionality for each option
Padding (2)
The settings for Padding are the same as the methods for ArrayPad, including "Periodic":

https://wolfram.com/xid/0d4ktomcm5gltdhu-dehf7e


https://wolfram.com/xid/0d4ktomcm5gltdhu-qpkfr


https://wolfram.com/xid/0d4ktomcm5gltdhu-ldsb8a


https://wolfram.com/xid/0d4ktomcm5gltdhu-sme52


https://wolfram.com/xid/0d4ktomcm5gltdhu-ntyqgp


https://wolfram.com/xid/0d4ktomcm5gltdhu-pojqqw


https://wolfram.com/xid/0d4ktomcm5gltdhu-bsohej

Padding can remove boundary effects:

https://wolfram.com/xid/0d4ktomcm5gltdhu-x52hhy

https://wolfram.com/xid/0d4ktomcm5gltdhu-ung771

Using the default "Periodic" padding:

https://wolfram.com/xid/0d4ktomcm5gltdhu-rtqg9j

https://wolfram.com/xid/0d4ktomcm5gltdhu-g93fui

Using "Extrapolated" padding has fewer boundary effects for nonperiodic data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-3alr6e

https://wolfram.com/xid/0d4ktomcm5gltdhu-5q71rx

WorkingPrecision (3)
By default, WorkingPrecision->MachinePrecision is used:

https://wolfram.com/xid/0d4ktomcm5gltdhu-btupk0

https://wolfram.com/xid/0d4ktomcm5gltdhu-fvcmsi


https://wolfram.com/xid/0d4ktomcm5gltdhu-iwm7rm


https://wolfram.com/xid/0d4ktomcm5gltdhu-bomt1d

Use higher-precision computation:

https://wolfram.com/xid/0d4ktomcm5gltdhu-e7oo7e

https://wolfram.com/xid/0d4ktomcm5gltdhu-6lkrhl

With numbers close to zero, accuracy is the better indicator of the number of correct digits:

https://wolfram.com/xid/0d4ktomcm5gltdhu-cqyqyd

Use WorkingPrecision->∞ for exact computation:

https://wolfram.com/xid/0d4ktomcm5gltdhu-m5fvtb

https://wolfram.com/xid/0d4ktomcm5gltdhu-5ais8y

Applications (11)Sample problems that can be solved with this function
Wavelet Compression (1)
Compress data by finding a representation with few nonzero coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-6esnso

https://wolfram.com/xid/0d4ktomcm5gltdhu-j1b7ln

SymletWavelet[n] has n vanishing moments and represents polynomials of degree n:

https://wolfram.com/xid/0d4ktomcm5gltdhu-1870cg
Count counts the number of wavelet coefficients close to 0:

https://wolfram.com/xid/0d4ktomcm5gltdhu-v3m8sz

Detect Discontinuities and Edges (2)
Visualize discontinuities in the wavelet domain:

https://wolfram.com/xid/0d4ktomcm5gltdhu-i2926z

https://wolfram.com/xid/0d4ktomcm5gltdhu-xndaw6

Detail coefficients in the region of discontinuities have larger values:

https://wolfram.com/xid/0d4ktomcm5gltdhu-vobk7q

https://wolfram.com/xid/0d4ktomcm5gltdhu-mtt4yw


https://wolfram.com/xid/0d4ktomcm5gltdhu-glhsr6

https://wolfram.com/xid/0d4ktomcm5gltdhu-oyzynz

Set coarse coefficients to 0 and reconstruct using detail coefficients only:

https://wolfram.com/xid/0d4ktomcm5gltdhu-tz24k7

https://wolfram.com/xid/0d4ktomcm5gltdhu-f6jjqj

Energy Comparison (1)
Compare the cumulative energy in a signal, its wavelet coefficients, and Fourier coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-ghuz1d

https://wolfram.com/xid/0d4ktomcm5gltdhu-vrds9l

Compute the ordered cumulative energy in the signal:

https://wolfram.com/xid/0d4ktomcm5gltdhu-d0i4sz

https://wolfram.com/xid/0d4ktomcm5gltdhu-q8ovws

Compute wavelet coefficients and Fourier coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-1n8h94

https://wolfram.com/xid/0d4ktomcm5gltdhu-cdyfw6
The DWT captures more energy with fewer coefficients than the DFT:

https://wolfram.com/xid/0d4ktomcm5gltdhu-dpf8jz

Denoising (3)
Perform energy-dependent thresholding:

https://wolfram.com/xid/0d4ktomcm5gltdhu-y01hyh

https://wolfram.com/xid/0d4ktomcm5gltdhu-dd9xsz


https://wolfram.com/xid/0d4ktomcm5gltdhu-s2redz
Computing the fraction of energy contained at each refinement level:

https://wolfram.com/xid/0d4ktomcm5gltdhu-efq61x

Set wavelet coefficients containing less than 1% energy to zero:

https://wolfram.com/xid/0d4ktomcm5gltdhu-r4nuw6

https://wolfram.com/xid/0d4ktomcm5gltdhu-fvrhqf

https://wolfram.com/xid/0d4ktomcm5gltdhu-386uh2

Perform an amplitude-dependent thresholding:

https://wolfram.com/xid/0d4ktomcm5gltdhu-4w1av0

https://wolfram.com/xid/0d4ktomcm5gltdhu-83jmoj


https://wolfram.com/xid/0d4ktomcm5gltdhu-o7a6zp
Use WaveletThreshold to perform "Universal" thresholding:

https://wolfram.com/xid/0d4ktomcm5gltdhu-fkwcst

https://wolfram.com/xid/0d4ktomcm5gltdhu-s72xb9

Use Stein's unbiased risk estimator smoothing:

https://wolfram.com/xid/0d4ktomcm5gltdhu-5jmg82

https://wolfram.com/xid/0d4ktomcm5gltdhu-tqi507

Denoise an Image:

https://wolfram.com/xid/0d4ktomcm5gltdhu-deapzr

https://wolfram.com/xid/0d4ktomcm5gltdhu-tol1xp
Perform "Soft" thresholding with threshold value "SURE" computed adaptively at each level:

https://wolfram.com/xid/0d4ktomcm5gltdhu-faki6e
Invert thresholded coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-k43fr0

Frequency Filtering (1)
Wavelet transforms can be used to filter frequencies:

https://wolfram.com/xid/0d4ktomcm5gltdhu-i7w7q9

https://wolfram.com/xid/0d4ktomcm5gltdhu-p6wez

https://wolfram.com/xid/0d4ktomcm5gltdhu-dzkhmb

To filter out the two signals, first perform a wavelet transform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-5bmd19
Use WaveletListPlot to visualize frequency distribution:

https://wolfram.com/xid/0d4ktomcm5gltdhu-ye4b6c

To filter low frequencies, keep only the coarse coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-cvprwr

https://wolfram.com/xid/0d4ktomcm5gltdhu-f9lost

To filter high frequencies, keep only the detail coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-bc096r

https://wolfram.com/xid/0d4ktomcm5gltdhu-nq3kza

Finance (3)
Extract the stock price trend for IBM since January 1, 2000:

https://wolfram.com/xid/0d4ktomcm5gltdhu-drjdck

https://wolfram.com/xid/0d4ktomcm5gltdhu-c8bnyn


https://wolfram.com/xid/0d4ktomcm5gltdhu-ixvjvh
The trend of the series is captured in the lowpass filter coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-exk77h

Thresholding all detail coefficients and inverting the series gives the trend:

https://wolfram.com/xid/0d4ktomcm5gltdhu-e6tyv4

https://wolfram.com/xid/0d4ktomcm5gltdhu-8n8fif


https://wolfram.com/xid/0d4ktomcm5gltdhu-mpggpu

https://wolfram.com/xid/0d4ktomcm5gltdhu-4c7u5b


https://wolfram.com/xid/0d4ktomcm5gltdhu-yijg5u

Detail coefficients captured the detrended series:

https://wolfram.com/xid/0d4ktomcm5gltdhu-qntazs

Remove the trend by removing the coarse coefficients and inverting:

https://wolfram.com/xid/0d4ktomcm5gltdhu-090if2

https://wolfram.com/xid/0d4ktomcm5gltdhu-gse9p1

Study variance of returns in a financial time series:

https://wolfram.com/xid/0d4ktomcm5gltdhu-lkmihg

https://wolfram.com/xid/0d4ktomcm5gltdhu-5zqr0v

Perform a wavelet transform using HaarWavelet and SymletWavelet:

https://wolfram.com/xid/0d4ktomcm5gltdhu-q5bl6e
Since the GE return series does not exhibit low-frequency oscillations, higher-scale detail coefficients do not indicate large variations from zero:

https://wolfram.com/xid/0d4ktomcm5gltdhu-x8spio

Although both filters will capture the variance of the series, they distribute it differently because of their approximate bandpass properties:

https://wolfram.com/xid/0d4ktomcm5gltdhu-v0bxk

https://wolfram.com/xid/0d4ktomcm5gltdhu-ede51
SymletWavelet isolates features in a certain frequency interval better than HaarWavelet:

https://wolfram.com/xid/0d4ktomcm5gltdhu-0m1lgq

Properties & Relations (15)Properties of the function, and connections to other functions
DiscreteWaveletPacketTransform computes the full tree of wavelet coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-om6men

https://wolfram.com/xid/0d4ktomcm5gltdhu-1zexfr

DiscreteWaveletTransform computes a subset of the full tree of coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-r42jth

https://wolfram.com/xid/0d4ktomcm5gltdhu-vlpb84

DiscreteWaveletTransform coefficients halve in length with each level of refinement:

https://wolfram.com/xid/0d4ktomcm5gltdhu-72op15

Rotated data gives different coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-nswego

StationaryWaveletTransform coefficients have the same length as the original data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-zer7un

Rotated data gives rotated coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-uovhur

Multidimensional discrete wavelet transform is related to one-dimensional packet transform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-ybflpq

https://wolfram.com/xid/0d4ktomcm5gltdhu-wddau6


https://wolfram.com/xid/0d4ktomcm5gltdhu-9afbpd

https://wolfram.com/xid/0d4ktomcm5gltdhu-6n5odr

For Haar wavelet (default) and data length , the computed coefficients are identical:

https://wolfram.com/xid/0d4ktomcm5gltdhu-l7z28z

The default refinement is given by :

https://wolfram.com/xid/0d4ktomcm5gltdhu-nvnob0

https://wolfram.com/xid/0d4ktomcm5gltdhu-k74t7s


https://wolfram.com/xid/0d4ktomcm5gltdhu-ccu2mo


https://wolfram.com/xid/0d4ktomcm5gltdhu-dzom29

https://wolfram.com/xid/0d4ktomcm5gltdhu-nqp5e2


https://wolfram.com/xid/0d4ktomcm5gltdhu-lsny6n

The energy norm is conserved for orthogonal wavelet families:

https://wolfram.com/xid/0d4ktomcm5gltdhu-hh4od4

https://wolfram.com/xid/0d4ktomcm5gltdhu-z58fpr

https://wolfram.com/xid/0d4ktomcm5gltdhu-0j3fcn

The energy norm is approximately conserved for biorthogonal wavelet families:

https://wolfram.com/xid/0d4ktomcm5gltdhu-ftqzwu

https://wolfram.com/xid/0d4ktomcm5gltdhu-uqfzo

https://wolfram.com/xid/0d4ktomcm5gltdhu-2wyhvw


https://wolfram.com/xid/0d4ktomcm5gltdhu-cvwt6v

The mean of the data is captured at the maximum refinement level of the transform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-jsrwt6

https://wolfram.com/xid/0d4ktomcm5gltdhu-esuqos
Extract the coefficient for the maximum refinement level:

https://wolfram.com/xid/0d4ktomcm5gltdhu-rn4mma


https://wolfram.com/xid/0d4ktomcm5gltdhu-2firkb

Compensate for the normalization at each refinement level:

https://wolfram.com/xid/0d4ktomcm5gltdhu-tl1xr4


https://wolfram.com/xid/0d4ktomcm5gltdhu-yoic8t

The sum of inverse transforms from individual coefficient arrays gives the original data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-71wxdw


https://wolfram.com/xid/0d4ktomcm5gltdhu-qm9cuf

https://wolfram.com/xid/0d4ktomcm5gltdhu-islxwj

Individually inverse transform each wavelet coefficient array:

https://wolfram.com/xid/0d4ktomcm5gltdhu-qadvnh


https://wolfram.com/xid/0d4ktomcm5gltdhu-jvt70z


https://wolfram.com/xid/0d4ktomcm5gltdhu-ov8xp2

The sum gives the original data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-fswsdm

Compute discrete wavelet coefficients for periodic data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-81usyq

https://wolfram.com/xid/0d4ktomcm5gltdhu-c6pxyh

https://wolfram.com/xid/0d4ktomcm5gltdhu-8059v1
Define filter coefficients to have compact support:

https://wolfram.com/xid/0d4ktomcm5gltdhu-8xpc58

https://wolfram.com/xid/0d4ktomcm5gltdhu-yrprzl
Coarse coefficients at level are given by
, with
:

https://wolfram.com/xid/0d4ktomcm5gltdhu-9iulp7

https://wolfram.com/xid/0d4ktomcm5gltdhu-0usjr

https://wolfram.com/xid/0d4ktomcm5gltdhu-8kw0h5

Detail coefficients at level are given by
:

https://wolfram.com/xid/0d4ktomcm5gltdhu-l1w7i4

https://wolfram.com/xid/0d4ktomcm5gltdhu-c7zdu6

https://wolfram.com/xid/0d4ktomcm5gltdhu-wl5c72

Compute a partial discrete inverse wavelet transform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-knxsvp

https://wolfram.com/xid/0d4ktomcm5gltdhu-115wba

https://wolfram.com/xid/0d4ktomcm5gltdhu-ut3bvb
Define filter coefficients to have compact support:

https://wolfram.com/xid/0d4ktomcm5gltdhu-upz69t

https://wolfram.com/xid/0d4ktomcm5gltdhu-jcggoi
Coarse coefficients at level are given:

https://wolfram.com/xid/0d4ktomcm5gltdhu-0y4m9q

https://wolfram.com/xid/0d4ktomcm5gltdhu-kubtpu
Detail coefficients at level are given:

https://wolfram.com/xid/0d4ktomcm5gltdhu-78x6bs

https://wolfram.com/xid/0d4ktomcm5gltdhu-oo7c0k
Inverse wavelet transform at level is given by
:

https://wolfram.com/xid/0d4ktomcm5gltdhu-66znis

https://wolfram.com/xid/0d4ktomcm5gltdhu-bnpxaq
Reconstruct coarse coefficients {0,0} at refinement level :

https://wolfram.com/xid/0d4ktomcm5gltdhu-t9kl1n

Reconstruct coarse coefficients {0} at refinement level :

https://wolfram.com/xid/0d4ktomcm5gltdhu-vxh7ou

Compute the dimensions of wavelet coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-59looe

https://wolfram.com/xid/0d4ktomcm5gltdhu-5vlm1c
At refinement level , the dimensions of wavelet coefficients are given by
, where
represents dimensions of input data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-8cklxm

https://wolfram.com/xid/0d4ktomcm5gltdhu-6tsyjd
Compare dimensions with coefficient dimensions in dwd:

https://wolfram.com/xid/0d4ktomcm5gltdhu-6aog5d


https://wolfram.com/xid/0d4ktomcm5gltdhu-xlpkkm

Compute a Haar discrete wavelet transform in one dimension:

https://wolfram.com/xid/0d4ktomcm5gltdhu-kywxlf

https://wolfram.com/xid/0d4ktomcm5gltdhu-f0nc2a
Compute {0} and {1} wavelet coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-bzen0a

Compare with DiscreteWaveletTransform:

https://wolfram.com/xid/0d4ktomcm5gltdhu-zcrryy

In two dimensions, a separate filter is applied in each dimension:

https://wolfram.com/xid/0d4ktomcm5gltdhu-cq5vc4
Lowpass and highpass filters for Haar wavelet:

https://wolfram.com/xid/0d4ktomcm5gltdhu-bzl44r
Haar wavelet transform of matrix data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-5n59bt

https://wolfram.com/xid/0d4ktomcm5gltdhu-6zl4c

Compare with DiscreteWaveletTransform using HaarWavelet:

https://wolfram.com/xid/0d4ktomcm5gltdhu-maqks4

https://wolfram.com/xid/0d4ktomcm5gltdhu-s166s

Image channels are transformed individually:

https://wolfram.com/xid/0d4ktomcm5gltdhu-gfhws8

Combine {0} coefficients of separately transformed image channels:

https://wolfram.com/xid/0d4ktomcm5gltdhu-kh8lp

Compare with {0} coefficient of DiscreteWaveletTransform of the original image:

https://wolfram.com/xid/0d4ktomcm5gltdhu-t91ou

https://wolfram.com/xid/0d4ktomcm5gltdhu-byduzg


https://wolfram.com/xid/0d4ktomcm5gltdhu-6hevx

DWT is similar to LiftingWaveletTransform with extra coefficients needed for padding:

https://wolfram.com/xid/0d4ktomcm5gltdhu-vk5frs

https://wolfram.com/xid/0d4ktomcm5gltdhu-x4f7ks

https://wolfram.com/xid/0d4ktomcm5gltdhu-3m2nag


https://wolfram.com/xid/0d4ktomcm5gltdhu-15s3zl

Possible Issues (1)Common pitfalls and unexpected behavior
Padding can affect the total energy of wavelet coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-hkzuox

https://wolfram.com/xid/0d4ktomcm5gltdhu-bgqoqz

https://wolfram.com/xid/0d4ktomcm5gltdhu-ir1xix

Pad with 0s to ensure energy conservation in the coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-qvgvx8

https://wolfram.com/xid/0d4ktomcm5gltdhu-0zly8

Neat Examples (1)Surprising or curious use cases
Create a padded matrix of data:

https://wolfram.com/xid/0d4ktomcm5gltdhu-qpxv4y

https://wolfram.com/xid/0d4ktomcm5gltdhu-rnzvdf

Create a 3D plot of the Haar DWT coefficients:

https://wolfram.com/xid/0d4ktomcm5gltdhu-oan0i9

https://wolfram.com/xid/0d4ktomcm5gltdhu-qbabha

Wolfram Research (2010), DiscreteWaveletTransform, Wolfram Language function, https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html (updated 2017).
Text
Wolfram Research (2010), DiscreteWaveletTransform, Wolfram Language function, https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html (updated 2017).
Wolfram Research (2010), DiscreteWaveletTransform, Wolfram Language function, https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html (updated 2017).
CMS
Wolfram Language. 2010. "DiscreteWaveletTransform." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017. https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html.
Wolfram Language. 2010. "DiscreteWaveletTransform." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017. https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html.
APA
Wolfram Language. (2010). DiscreteWaveletTransform. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html
Wolfram Language. (2010). DiscreteWaveletTransform. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html
BibTeX
@misc{reference.wolfram_2025_discretewavelettransform, author="Wolfram Research", title="{DiscreteWaveletTransform}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html}", note=[Accessed: 01-April-2025
]}
BibLaTeX
@online{reference.wolfram_2025_discretewavelettransform, organization={Wolfram Research}, title={DiscreteWaveletTransform}, year={2017}, url={https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html}, note=[Accessed: 01-April-2025
]}