Main Content


Multisignal 1-D wavelet compression scores




[THR,L2SCR,NOSCR,IDXSORT] = mswcmpscr(DEC) computes four matrices: thresholds THR, compression scores L2SCR and NOSCR, and indices IDXSORT. The decomposition DEC corresponds to a matrix of wavelet coefficients CFS obtained by concatenation of detail and (optionally) approximation coefficients, where

CFS = [cd{DEC.level}, ... , cd{1}] or CFS = [ca, cd{DEC.level}, ... , cd{1}]

The concatenation is made row-wise if DEC.dirDec is equal to 'r' or column-wise if DEC.dirDec is equal to 'c'.

If NbSIG is the number of original signals and NbCFS the number of coefficients for each signal (all or only the detail coefficients), then CFS is an NbSIG-by-NbCFS matrix. Therefore,

  • THR, L2SCR, NOSCR are NbSIG-by-(NbCFS+1) matrices

  • IDXSORT is an NbSIG-by-NbCFS matrix

  • THR(:,2:end) is equal to CFS sorted by row in ascending order with respect to the absolute value.

  • For each row, IDXSORT contains the order of coefficients and THR(:,1)=0.

For the ith signal:

  • L2SCR(i,j) is the percentage of preserved energy (L2-norm), corresponding to a threshold equal to CFS(i,j-1) (2jNbCFS), and L2SCR(:,1)=100.

  • N0SCR(i,j) is the percentage of zeros corresponding to a threshold equal to CFS(i,j-1) (2jNbCFS), and N0SCR(:,1)=0.

Three more optional inputs may be used:

[...] = mswcmpscr(...,S_OR_H,KEEPAPP,IDXSIG)

  • S_OR_H ('s' or 'h') stands for soft or hard thresholding (see mswthresh for more details).

  • KEEPAPP (true or false) indicates whether to keep approximation coefficients (true) or not (false).

  • IDXSIG is a vector that contains the indices of the initial signals, or 'all'.

The defaults are, respectively, 'h', false and 'all'.


collapse all

Load the 23 channel EEG data Espiga3 [4]. The channels are arranged column-wise. The data is sampled at 200 Hz.

load Espiga3

Perform a decomposition at level 2 using the db2 wavelet.

dec = mdwtdec('c',Espiga3,2,'db2')
dec = struct with fields:
        dirDec: 'c'
         level: 2
         wname: 'db2'
    dwtFilters: [1x1 struct]
       dwtEXTM: 'sym'
      dwtShift: 0
      dataSize: [995 23]
            ca: [251x23 double]
            cd: {[499x23 double]  [251x23 double]}

Compute the compression performances for soft and hard thresholding.

[THR_S,L2SCR_S,N0SCR_S] = mswcmpscr(dec,'s');
[THR_H,L2SCR_H,N0SCR_H] = mswcmpscr(dec,'h');


[1] Daubechies, I. Ten Lectures on Wavelets, CBMS-NSF Regional Conference Series in Applied Mathematics. Philadelphia, PA: SIAM Ed, 1992.

[2] Mallat, S. G. “A Theory for Multiresolution Signal Decomposition: The Wavelet Representation,” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 11, Issue 7, July 1989, pp. 674–693.

[3] Meyer, Y. Wavelets and Operators. Translated by D. H. Salinger. Cambridge, UK: Cambridge University Press, 1995.

[4] Mesa, Hector. “Adapted Wavelets for Pattern Detection.” In Progress in Pattern Recognition, Image Analysis and Applications, edited by Alberto Sanfeliu and Manuel Lazo Cortés, 3773:933–44. Berlin, Heidelberg: Springer Berlin Heidelberg, 2005.

Version History

Introduced in R2007a