# How to test wavelet transforms?

One pertinent attribute is normalization, which measures performance in describing signal spectral amplitude and energy, like here. Others are robustness to noise, time vs frequency resolution. Anything else? And are there examples of each being computed (coded, discrete) on test signals?

The goal's to compare Continuous Wavelet Transform implementations, but I don't have much for comparing except norms.

There are many options to test a wavelet transform, or compare them.

You can first compare them on their most basic properties. One can check whether it is invertible, orthogonal, biorthogonal, critical or redundant (and the oversampling ratio), separable or not, (close-to) invariant to transformations of the signal (symmetry, rotation, scaling, shear). They take weak care about data. Because those properties are often tested against "all data", or random enough (like several noise realizations).

And at the end of the processing workflow (denoising, compression, restoration), you can compare the outcome of some objective or subjective measures (SNR, PSNR, SSIM, other norm-related metrics).

In between, one can estimate vector features on wavelet coefficients. Such measures can be computed and evaluated via standard statistics (mean, standard deviation, median, median absolute deviation) and across data models. But you can also think of higher order moments: absolute, centered, ratios of moments. From now on, I will call coefficients from the same scale "subband" (aka voices for continuous wavelet transforms), and use the discrete wavelet transform formalism. Beware: subbands can be subsampled in different manners, and scaled accordingly.

Typically, one computes a vector made of statistics of each subband, or a gathering of subbands. As wavelet subbands are normally zero-mean, coefficients are typically norms (non-centered moments) of subband coefficients. Suppose a three-level decomposition, with $$A_3$$, $$D_3$$, $$D_2$$ and $$D_1$$ approximation and detail coefficients. A feature vector could be made of the norms of $$D_3$$, $$D_2$$ and $$D_1$$, and may something for $$A_3$$ (but for standard wavelets, the approximations could be close.

Sparsity is another interesting feature: how well are wavelet coefficients concentrated with respect to the original signal? A 2009 paper, Comparing Measures of Sparsity, provided axioms to compare statistical distributions, among them: Gini indices, norm ratios, kurtosis, etc.

As they have been recently considered for quality metrics, stopping criteria or robust sparsity estimators, I would like to pinpoint two of our recent adventures into using regularized ratios of norms ($$\ell_1/\ell_2$$ in Euclid in a Taxicab: Sparse Blind Deconvolution with Smoothed l1/l2 Regularization) or SPOQ ℓp-Over-ℓq Regularization for Sparse Signal Recovery applied to Mass Spectrometry with its Matlab toolbox.

Norm or quasi-norm/norm ratios can be quite efficient while dealing with sparsifying transformations.

• Many points here, thanks. Any examples of "vector features on wavelet coefficients"? And, what do you mean by "they take weak care about data"? – OverLordGoldDragon Oct 4 '20 at 18:58
• I have added more details, tell me if more is useful – Laurent Duval Oct 4 '20 at 19:21
• Much terminology unfamiliar to me; I'm guessing "subband" and $A$, $D$ refer to concepts in the Discrete Wavelet Transform (and are these applicable to Continuous)? – OverLordGoldDragon Oct 5 '20 at 6:59
• For CWT, one can use subbands, or voices. They can be subsampled with different factors, hence the need to measure redundancy – Laurent Duval Oct 5 '20 at 14:14

"Test signals" of varying time-frequency characteristics can offer important insight on effects of a wavelet, window, or other transform configurations. In particular one may be interested in capturing/handling:

• Very high or low frequencies
• Frequency jumps
• Fast frequency modulations (linear, exponential, hyperbolic)
• Amplitude modulation
• Close band separation
• Noise robustness

No single transform can excel at everything - comparing directly will help in gauging tradeoffs. Below compares CWT vs STFT with wavelet and window chosen to have ~same time & frequency resolution; full post compares CWT at high frequency vs high time resolution, and shows time-domain waveforms.

Plots via ssqueezepy's TestSignals().cwt_vs_stft().