# liftingScheme

Create lifting scheme for lifting wavelet transform

## Description

Use the `liftingScheme` object to create a lifting scheme that you can efficiently apply to data.

## Creation

### Syntax

``lscheme = liftingScheme``
``lscheme = liftingScheme(Name,Value)``

### Description

````lscheme = liftingScheme` creates the lifting scheme for the `'lazy'` wavelet with normalization set to 1.```

example

````lscheme = liftingScheme(Name,Value)` creates a lifting scheme with properties specified by name-value pairs. Enclose the property name in quotes. You can create a lifting scheme using one of the following syntaxes: ```lscheme = liftingScheme('Wavelet',wname)``````lscheme = liftingScheme('CustomLowpassFilter',filter)``````lscheme = liftingScheme('LiftingSteps',liftingSteps,'NormalizationFactors',normFactors)``` ```

## Properties

expand all

Orthogonal or biorthogonal wavelet associated with the lifting scheme, specified as one of these.

Wavelet Family`Wavelet`
Daubechies`'lazy'`, `'haar'`, `'db1'`, `'db2'`, `'db3'`, `'db4'`, `'db5'`, `'db6'`, `'db7'`, and `'db8'`
Symlet`'sym2'`, `'sym3'`, `'sym4'`, `'sym5'`, `'sym6'`, `'sym7'`, and `'sym8'`
Cohen-Daubechies-Feauveau`'cdf1.1'`, `'cdf1.3'`, `'cdf1.5'`, `'cdf2.2'`, `'cdf2.4'`, `'cdf2.6'`, `'cdf3.1'`, `'cdf3.3'`, `'cdf3.5'`, `'cdf4.2'`, `'cdf4.4'`, `'cdf4.6'`, `'cdf5.1'`, `'cdf5.3'`, `'cdf5.5'`,` 'cdf6.2'`, `'cdf6.4'`, and `'cdf6.6'`
Coiflet`'coif1'`, and `'coif2'`
Biorthogonal`'bior1.1'`, `'bior1.3'`,`'bior1.5'`, `'bior2.2'`, `'bior2.4'`, `'bior2.6'`, `'bior2.8'`, `'bior3.1'`, `'bior3.3'`, `'bior3.5'`, `'bior3.7'`, `'bior3.9'`, `'bior4.4'`, `'bior5.5'`, `'bior6.8'`, `'bs3'`, and `'9.7'`
Reverse Biorthogonal`'rbs3'`, `'r9.7'`, `'rbio1.1'`, `'rbio1.3'`, `'rbio1.5'`, `'rbio2.2'`, `'rbio2.4'`, `'rbio2.6'`, `'rbio2.8'`, `'rbio3.1'`, `'rbio3.3'`, `'rbio3.5'`, `'rbio3.7'`, `'rbio3.9'`, `'rbio4.4'`, `'rbio5.5'`, and `'rbio6.8'`

Example: `lscheme = liftingScheme('Wavelet','bior3.7')` creates the lifting scheme associated with the `'bior3.7'` biorthogonal wavelet.

Lowpass filters associated with the lifting scheme, specified as a cell array.

• To create a lifting scheme associated with an orthogonal wavelet, set `CustomLowpassFilter` to `{LoD}`, where `LoD` is the lowpass filter associated with wavelet.

• To create a lifting scheme associated with a biorthogonal wavelet, set `CustomLowpassFilter` to `{LoPrimal,LoDual}`, where `LoPrimal` and `LoDual` are the lowpass filters associated with the biorthogonal wavelet.

When you specify filter coefficients, the `Wavelet` property is automatically set to `'custom'`.

Example: ```lscheme = liftingScheme('CustomLowpassFilter',{[sqrt(2)/2 sqrt(2)/2]})``` creates a lifting scheme associated with the Haar wavelet.

Data Types: `single` | `double`

Lifting steps associated with the lifting scheme, specified as an array of structures obtained from `liftingStep`. To create a lifting scheme using `LiftingSteps`, you must also set the `NormalizationFactors` property. When you set these two properties, the `Wavelet` property is automatically set to `'custom'`.

Example: ```lscheme = liftingScheme('LiftingSteps',ELS,'NormalizationFactors',NF)``` creates a lifting scheme using the `liftingStep` structures specified in `ELS` and factors specified in `NF`.

Normalization factors associated with the lifting scheme, specified as K or ```[K 1/K]```, where K is a non-zero scalar. The factor K specifies the diagonal elements of the 2-by-2 normalization matrix. If specified as a vector, the product of the vector elements must equal 1 to within precision.

To create a lifting scheme using `NormalizationFactors`, you must also set the `LiftingSteps` property. When you set these two properties, the `Wavelet` property is automatically set to `'custom'`.

Data Types: `double`

## Object Functions

 `addlift` Add elementary lifting steps `deletelift` Delete elementary lifting steps `ls2filt` Extract wavelet filters from lifting scheme `disp` Display lifting scheme

## Examples

collapse all

Create the lifting scheme associated with the Haar wavelet.

`lscheme = liftingScheme('Wavelet','haar')`
```lscheme = Wavelet : 'haar' LiftingSteps : [2 × 1] liftingStep NormalizationFactors : [1.4142 0.7071] CustomLowpassFilter : [ ] Details of LiftingSteps : Type: 'predict' Coefficients: -1 MaxOrder: 0 Type: 'update' Coefficients: 0.5000 MaxOrder: 0 ```

Obtain the level 2 wavelet decomposition of a signal using the lifting scheme. Inspect the approximation and detail coefficients.

```sig = 0:7; [appC,detC]=lwt(sig,'LiftingScheme',lscheme,'Level',2); appC```
```appC = 2×1 3.0000 11.0000 ```
`detC{1}`
```ans = 4×1 0.7071 0.7071 0.7071 0.7071 ```
`detC{2}`
```ans = 2×1 2.0000 2.0000 ```

Obtain the inverse transform and demonstrate perfect reconstruction.

```xrec = ilwt(appC,detC,'LiftingScheme',lscheme); max(abs(xrec(:)-sig(:)))```
```ans = 2.6645e-15 ```

Create a lifting scheme using the lowpass filters associated with the `db4` wavelet.

```wv = 'db4'; [~,~,LoR,~] = wfilters(wv); LS = liftingScheme('CustomLowpassFilter',{LoR});```

Create the lifting scheme associated with the biorthogonal `bior2.2` wavelet.

`lscheme = liftingScheme('Wavelet','bior2.2');`

A wavelet with $N$ vanishing moments is orthogonal to degree $N-1$ polynomials. The `bior2.2` wavelet has two vanishing moments. Create a signal by sampling a polynomial of degree 1.

`sig = 1:16;`

Apply the lifting scheme to the signal. Inspect the detail coefficients at the finest scale. The `bior2.2` wavelet is orthogonal to the degree 1 polynomial. Confirm that except for the nonzero coefficient at the boundary, the detail coefficients are zero.

```[A,D] = lwt(sig,'LiftingScheme',lscheme); D{1}```
```ans = 8×1 0 0 0 0 0 0 0 5.6569 ```

Now create the lifting scheme associated with the Haar wavelet.

`lschemeH = liftingScheme('Wavelet','haar');`

Apply the lifting scheme to the signal. Confirm the detail coefficients are all nonzero. Because the Haar wavelet has only one vanishing moment, the wavelet is not orthogonal to the degree 1 polynomial.

```[AH,DH] = lwt(sig,'LiftingScheme',lschemeH); DH{1}```
```ans = 8×1 0.7071 0.7071 0.7071 0.7071 0.7071 0.7071 0.7071 0.7071 ```

## Compatibility Considerations

expand all

Behavior changed in R2021b