Skip to the content.

Build Status Coverage Status GitHub License NPM Version Monthly Downloads

This library is no longer actively maintained. This means that no new functionality or documentation is added.

Discrete Wavelets

A Discrete Wavelet Transform (DWT) library for the web.

This library is well tested. Still, it may contain some errors. Therefore it is recommended to double check the results with another library such as PyWavelets. If you find any errors, please let me know by opening an issue or a pull request.

Importing this library

Node Modules

CDN

Types

The library uses the following types:

PaddingMode

The following values for PaddingMode are supported at the moment:

Name Value Description
Zero Padding 'zero' Adding zeros.
Constant Padding 'constant' Replication of border values.
Symmetric Padding 'symmetric' Mirroring of samples.
Reflect Padding 'reflect' Reflecting of samples.
Periodic Padding 'periodic' Treating signal as a periodic one.
Smooth Padding 'smooth' Signal extended as a straight line.
Antisymmetric Padding 'antisymmetric' Mirroring and negation of samples.

You can get a list of the supported signal extension modes:

console.log(wt.Modes.modes);
// expected output: Array ['zero', 'constant', 'symmetric', 'periodic', 'smooth', 'reflect', 'antisymmetric']

Wavelets

The following Wavelet types are supported at the moment:

Wavelet Aliases
Daubechies 1 / Haar 'db1', 'D2', 'haar'
Daubechies 2 'db2', 'D4'
Daubechies 3 'db3', 'D6'
Daubechies 4 'db4', 'D8'
Daubechies 5 'db5', 'D10'
Daubechies 6 'db6', 'D12'
Daubechies 7 'db7', 'D14'
Daubechies 8 'db8', 'D16'
Daubechies 9 'db9', 'D18'
Daubechies 10 'db10', 'D20'

API

The library offers the following functions:

dwt

Single level Discrete Wavelet Transform.

Arguments

Return

coeffs (number[][]): Approximation and detail coefficients as result of the transform.

Example

var coeffs = wt.dwt([1, 2, 3, 4], "haar");

console.log(coeffs);
// expected output: Array [[2.1213203435596425, 4.9497474683058326], [-0.7071067811865475, -0.7071067811865475]]

wavedec

1D wavelet decomposition. Transforms data by calculating coefficients from input data.

Arguments

Return

coeffs (number[][]): Coefficients as result of the transform.

Example

var coeffs = wt.wavedec([1, 2, 3, 4], "haar");

console.log(coeffs);
// expected output: Array [[4.999999999999999], [-1.9999999999999993], [-0.7071067811865475, -0.7071067811865475]]

Be aware that due to floating point imprecision the result diverges slightly from the analytical solution [[5], [-2], [-0.7071067811865475, -0.7071067811865475]]

idwt

Single level inverse Discrete Wavelet Transform.

Arguments

Return

rec (number[]): Approximation coefficients of previous level of transform.

Example

var rec = wt.idwt(
  [(1 + 2) / Math.SQRT2, (3 + 4) / Math.SQRT2],
  [(1 - 2) / Math.SQRT2, (3 - 4) / Math.SQRT2],
  "haar"
);

console.log(rec);
// expected output: Array [0.9999999999999999, 1.9999999999999996, 2.9999999999999996, 3.9999999999999996]

Be aware that due to floating point imprecision the result diverges slightly from the analytical solution [1, 2, 3, 4]

waverec

1D wavelet reconstruction. Inverses a transform by calculating input data from coefficients.

Arguments

Return

data (number[]): Input data as result of the inverse transform.

Example

var data = wt.waverec([[5], [-2], [-1 / Math.SQRT2, -1 / Math.SQRT2]], "haar");

console.log(data);
// expected output: Array [0.9999999999999999, 1.9999999999999996, 2.999999999999999, 3.999999999999999]

Be aware that due to floating point imprecision the result diverges slightly from the analytical solution [1, 2, 3, 4]

energy

Calculates the energy as sum of squares of an array of data or coefficients.

Argument

Return

energy (number): Energy of values as the sum of squares.

Examples

console.log(wt.energy([-1, 2, 6, 1]));
// expected output: 42

console.log(wt.energy([[5], [-2], [-1 / Math.SQRT2, -1 / Math.SQRT2]]));
// expected output: 30

maxLevel

Determines the maximum level of useful decomposition.

Arguments

Return

maxLevel (number): Maximum useful level of decomposition.

Examples

var maxLevel = wt.maxLevel(4, "haar");

console.log(maxLevel);
// expected output: 2
var maxLevel = wt.maxLevel(1024, "haar");

console.log(maxLevel);
// expected output: 10

pad

Extends a signal with a given padding mode.

Arguments

Return

pad (number[]): Data with padding.

Example

var pad = wt.pad([42, 51], [2, 1], "zero");

console.log(pad);
// expected output: Array [0, 0, 42, 51, 0]

NPM scripts