FerroWave · guides
Transforms
The transforms and wavelet families ferro-wave provides, and when to reach for each.
Twelve transforms across two categories — six classical wavelet transforms
and six adaptive decomposition methods — plus the Hilbert-Huang downstream,
over five wavelet families and a Wavelet trait for custom filters.
Classical wavelet transforms
Batch entry points are free functions in ferro_wave::transform, each paired
with its inverse where the transform is invertible.
| Transform | Description |
|---|---|
dwt / idwt | Discrete wavelet transform; multilevel via dwt_multilevel. PyWavelets-canonical output lengths. |
modwt / imodwt | Maximal-overlap DWT — shift-invariant, no downsampling, length-preserving per level. |
swt / iswt | Stationary (undecimated) wavelet transform. |
wpt / iwpt | Wavelet packet transform with best-basis selection. |
cwt / cwt_fft / icwt | Continuous wavelet transform; cwt_fft is the FFT-accelerated path, ~15–20× over direct convolution. |
| complex / dual-tree CWT | Complex wavelets and the dual-tree CWT for approximate shift-invariance with phase. |
Wavelet families
ferro-wave provides five wavelet families plus a Wavelet trait for custom
filters:
- Haar.
- Daubechies Db2, Db4, Db6, Db8, Db10.
- Symlets Sym2 through Sym10.
- Coiflets Coif1 through Coif5.
- Biorthogonal CDF 5/3 and CDF 9/7.
- Custom discrete filters via the
Wavelettrait.
use ferro_wave::wavelets::{Daubechies, DaubechiesType, Symlet, Coiflet};
let db4 = Daubechies::new(DaubechiesType::Db4);
let sym8 = Symlet::new(8);
let coif3 = Coiflet::new(3);Adaptive decomposition family
Where a wavelet transform projects onto a fixed basis, the adaptive family
lets the data pick the basis. Every method returns the same IMF result type,
so downstream code (Hilbert spectrum, ridge extraction,
instantaneous-frequency tracking) works unchanged across the family. A short
rubric for choosing:
- EMD — greedy sifting on a single channel. Fast, no parameters; struggles with mode mixing on noisy or closely-spaced components.
- EEMD / CEEMDAN — noise-assisted ensembles that stabilize mode count and reduce mode-mixing. CEEMDAN (default Improved/ICEEMDAN) gives exact reconstruction; pair with a fixed seed for deterministic IMFs.
- MEMD — multivariate EMD for correlated channels; IMF index
kis the same intrinsic scale on every channel by construction. - VMD — variational mode decomposition via ADMM, when
Kis known a priori (or swept withvmd_select_k). Modes are band-limited by construction. - EWT — EMD-style adaptivity with exact reconstruction and per-band Parseval energy via a Fourier-adaptive Meyer filter bank.
- SST / SSWT — synchrosqueezed transform for a sharp time-frequency representation with provable AM-FM convergence (Daubechies-Lu-Wu 2011), plus ridge-based component inversion.
- Hilbert Spectrum / HHT — the productized end-to-end EMD → Hilbert pipeline with stationarity diagnostics.
Use it
- Multi-scale variance — decompose
variance by frequency band with
dwt_multilevel. - Adaptive / EMD — sift a non-stationary signal into IMFs.
- Streaming CWT — a Morlet scaleogram, updated tick-by-tick.
See the sanitized API reference for the full function signatures.