# wmpdictionary

(To be removed) Dictionary for matching pursuit

`wmpdictionary` will be removed in a future release. Use `sensingDictionary` instead. For more information, see Compatibility Considerations.

## Syntax

``MPDICT = wmpdictionary(N)``
``````[MPDICT,NBVECT] = wmpdictionary(N)``````
``````[MPDICT,NBVECT]= wmpdictionary(N,Name,Value)``````
``````[MPDICT,NBVECT,LST] = wmpdictionary(N,Name,Value)``````
``````[MPDICT,NBVECT,LST,LONGS] = wmpdictionary(N,Name,Value)``````

## Description

````MPDICT = wmpdictionary(N)` returns the `N`-by-P dictionary, `MPDICT`, for the default subdictionaries `{{'sym4',5},{'wpsym4',5},'dct','sin'}`. The column dimension of `MPDICT` depends on `N`.```
``````[MPDICT,NBVECT] = wmpdictionary(N)``` returns the row vector, `NBVECT`, which contains the number of vectors in each subdictionary. The order of the elements in `NBVECT` corresponds to the order of the subdictionaries and any prepended or appended subdictionaries. The sum of the elements in `NBVECT` is the column dimension of `MPDICT`.```

example

``````[MPDICT,NBVECT]= wmpdictionary(N,Name,Value)``` returns the dictionary, `MPDICT`, using additional options specified by one or more `Name,Value` pair arguments.```
``````[MPDICT,NBVECT,LST] = wmpdictionary(N,Name,Value)``` returns the cell array, `LST`, with descriptions of the subdictionaries. ```
``````[MPDICT,NBVECT,LST,LONGS] = wmpdictionary(N,Name,Value)``` returns the cell array, `LONGS`, containing the number of vectors in each subdictionary. `LONGS` is only useful for wavelet subdictionaries. In wavelet subdictionaries, the corresponding element in `LONGS` gives the number of scaling functions at the coarsest level and wavelet functions by level.```

## Examples

collapse all

Create a DCT and shifted Kronecker delta dictionary to represent a signal of length 100.

`mpdict = wmpdictionary(100,'lstcpt',{'dct','RnIdent'});`

## Input Arguments

collapse all

Length of your input signal, specified as a positive integer. The dictionary atoms are constructed to have `N` elements. `N` equals the row dimension of the dictionary, `MPDICT`.

Data Types: `double`

### Name-Value Arguments

Specify optional pairs of arguments as `Name1=Value1,...,NameN=ValueN`, where `Name` is the argument name and `Value` is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: ```MPDICT = wmpdictionary(100,lstcpt={'dct','RnIdent'})```

Before R2021a, use commas to separate each name and value, and enclose `Name` in quotes.

Example: ```MPDICT = wmpdictionary(100,'lstcpt',{'dct','RnIdent'})```

Prepended subdictionary, specified as an N-by-M matrix, where N is the length of the input signal. `wmpdictionary` does not check that the M column vectors of the prepended dictionary form a basis. If you do not specify a value for `lstcpt`, the subdictionary is prepended to the default dictionary. The column vectors in the prepended subdictionary do not have to be unit-norm.

Data Types: `double`

Appended subdictionary, specified as an N-by-M matrix, where N is the length of the input signal. `wmpdictionary` does not check that the M column vectors of the prepended dictionary form a basis. If you do not specify a value for `lstcpt`, the subdictionary is appended to the default dictionary. The column vectors in the appended subdictionary do not have to be unit-norm.

Data Types: `double`

A cell array of cell arrays with valid subdictionaries. Each cell array describes one subdictionary. Valid subdictionaries are:

• A valid Wavelet Toolbox™ orthogonal or biorthogonal wavelet family short name with the number of vanishing moments and an optional decomposition level and extension mode. For example, `{'sym4',5}` denotes the Daubechies least-asymmetric wavelet with 4 vanishing moments at level 5 and the default extension mode `'per'`. If you do not specify the optional level and extension mode, the decomposition level defaults to 5 and the extension mode to `'per'`.

• A valid Wavelet Toolbox orthogonal or biorthogonal wavelet family short name preceded by `wp` with the number of vanishing moments and an optional decomposition level and extension mode. For example, `{'wpsym4',5}` denotes the Daubechies least-asymmetric wavelet packet with 4 vanishing moments at level 5. If you do not specify the optional level and extension mode, the decomposition level defaults to 5 and the extension mode to `'per'`.

• `'dct'` Discrete cosine transform-II basis. The DCT-II orthonormal basis is:

`${\varphi }_{k}\left(n\right)=\left\{\begin{array}{ll}\frac{1}{\sqrt{N}}\hfill & k=0\hfill \\ \sqrt{\frac{2}{N}}\mathrm{cos}\left(\frac{\pi }{N}\left(n+\frac{1}{2}\right)k\right)\hfill & k=1,2,\dots ,N-1.\hfill \end{array}$`

• `'sin'` Sine subdictionary. The sine subdictionary is

`${\varphi }_{k}\left(t\right)=\mathrm{sin}\left(2\pi kt\right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{ }k=1,2,\dots ⌈\frac{N}{2}⌉\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{ }0\le t\le 1$`

where t is a linearly-spaced N-point vector.

• `'cos'` Cosine subdictionary. The cosine subdictionary is

`${\varphi }_{k}\left(t\right)=\mathrm{cos}\left(2\pi kt\right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{ }k=1,2,\dots ⌈\frac{N}{2}⌉\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{ }0\le t\le 1$`

where t is a linearly-spaced N-point vector.

• `'poly'` Polynomial subdictionary. The polynomial subdictionary is:

`${p}_{n}\left(t\right)={t}^{n-1}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{ }n=1,2,\dots 20\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{ }\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{ }0\le t\le 1$`

where t is a linearly-spaced N-point vector.

• `'RnIdent'` The shifted Kronecker delta subdictionary. The shifted Kronecker delta subdictionary is:

`${\varphi }_{k}\left(n\right)=\delta \left(n-k\right)\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{ }k=0,1,\dots N$`

Data Types: `double`

## Output Arguments

collapse all

Matching pursuit dictionary, returned as a matrix. `MPDICT` is an `N`-by-P matrix with the row dimension, `N`, equal to the length of the input signal. The column dimension of the matrix depends on the size of the concatenated subdictionaries.

Number of vectors in subdictionaries, returned as a vector. `NBVECT` is a row vector containing the number of elements in each subdictionary. The order of the elements in `NBVECT` corresponds to the order of the subdictionaries and any prepended or appended subdictionaries.

Dictionary description, returned as a cell array. `LST` is a 1-by-L cell array, where L is the number of subdictionaries. Each element of the cell array contains a description of a subdictionary. If you specify a prepended or appended subdictionary, the first element of `LST` is `'AddBeg'` or `'AddEnd'`. If you specify a level for the wavelet or wavelet packet, the corresponding element of `LST` is a 1-by-2 cell array containing the wavelet or wavelet packet name in the first element and the level in the second element.

Number of elements for each subdictionary, returned as a cell array. `LONGS` is useful only for wavelet subdictionaries. If you specify a wavelet subdictionary, the corresponding element of `LONGS` provides the number of scaling functions at the coarsest level and the number of wavelets at each level.

collapse all

### Matching Pursuit

Matching pursuit refers to a number of greedy or weak-greedy algorithms for computing an adaptive nonlinear expansion of a signal in a dictionary. In the majority of matching pursuit applications, a dictionary is an overcomplete set of vectors. The elements of the dictionary are referred to as atoms and are typically constructed to have certain time/frequency or time/scale properties. Matching pursuit takes the NP-hard problem of finding the best nonlinear expansion in a dictionary and implements it in an energy-preserving formulation that guarantees convergence. See Matching Pursuit Algorithms for more details.

## References

[1] Cai, T. Tony, and Lie Wang. “Orthogonal Matching Pursuit for Sparse Signal Recovery With Noise.” IEEE Transactions on Information Theory 57, no. 7 (July 2011): 4680–88. https://doi.org/10.1109/TIT.2011.2146090.

[2] Donoho, D.L., M. Elad, and V.N. Temlyakov. “Stable Recovery of Sparse Overcomplete Representations in the Presence of Noise.” IEEE Transactions on Information Theory 52, no. 1 (January 2006): 6–18. https://doi.org/10.1109/TIT.2005.860430.

[3] Mallat, S.G. and Zhifeng Zhang. “Matching Pursuits with Time-Frequency Dictionaries.” IEEE Transactions on Signal Processing 41, no. 12 (December 1993): 3397–3415. https://doi.org/10.1109/78.258082.

[4] Tropp, J.A. “Greed Is Good: Algorithmic Results for Sparse Approximation.” IEEE Transactions on Information Theory 50, no. 10 (October 2004): 2231–42. https://doi.org/10.1109/TIT.2004.834793.

## Version History

Introduced in R2012a

expand all

Not recommended starting in R2022a