Transforms

(ns transform
  (:require [fastmath.transform :as t]
            [fastmath.dev.codox :as codox]))

FFT

Wavelets

Reference

fastmath.transform

Transforms.

See transformer and TransformProto for details.

### Wavelet

Based on JWave library.

Be aware that some of the wavelet types doesn’t work properly. :battle-23, :cdf-53, :cdf-97.

### Cos/Sin/Hadamard

Orthogonal or standard fast sine/cosine/hadamard 1d transforms.

### Fourier

DFT, FFT, DHT.

compress

  • (compress trans xs mag)
  • (compress xs mag)

Compress transformed signal xs with given magnitude mag.

compress-peaks-average

  • (compress-peaks-average trans xs)
  • (compress-peaks-average xs)

Compress transformed signal xs with peaks average as a magnitude

denoise

  • (denoise xs {:keys [method threshold skip], :or {method :hard, threshold :universal, skip 0}})
  • (denoise trans xs method)
  • (denoise xs)

Wavelet shrinkage with some threshold.

Methods can be: * :hard (default)
* :soft * :garrote * :hyperbole

:threshold can be a number of one of the denoise-threshold methods (default: :visu)

:skip can be used to leave :skip number of coefficients unaffected (default: 0)

Use on transformed sequences or call with transformer object.

denoise-threshold

  • (denoise-threshold xs threshold)

Calculate optimal denoise threshold.

threshold is one of the following

  • :visu - based on median absolute deviation estimate (default)
  • :universal - based on standard deviation estimate
  • :sure or :rigrsure - based on SURE estimator
  • :hybrid or :heursure - hybrid SURE estimator

forward-1d

  • (forward-1d t xs)

Forward transform of sequence or array.

forward-2d

  • (forward-2d t xss)

Forward transform of sequence or array.

reverse-1d

  • (reverse-1d t xs)

Forward transform of sequence or array.

reverse-2d

  • (reverse-2d t xss)

Forward transform of sequence or array.

transformer

Create transform object for given wavelet.

#### Wavelets

  • :fast for 1d or 2d Fast Wavelet Transform. Size of data should be power of 2.
  • :packet for 1d or 2d Wavelet Packet Transform. Size of data should be power of 2.
  • :decomposed-fast for 1d Fast Wavelet Transform. Data can have any size (Ancient Egyptian Decomposition is used).
  • :decomposed-packet for 1d Wavelet Packet Transform. Data can have any size (Ancient Egyptian Decomposition is used).

Second argument is wavelet name as key. See wavelets-list for all supported names.

#### Sine/Cosine/Hadamard

  • :standard for 1d :sine, :cosine, :hadamard.
  • :orthogonal for 1d :sine, :cosine.

Note that :sine and :cosine require first element to be equal 0. Size of data should be power of 2.

#### Fourier

  • :standard :dft - 1d Discrete Fourier Transform - returns double-array where even elements are real part, odd elements are imaginary part.

wavelets-list

List of all possible wavelets.