# dwt3

Single-level 3-D discrete wavelet transform

## Syntax

``wt = dwt3(x,wname)``
``wt = dwt3(x,wname,'mode',extM)``
``wt = dwt3(x,w,___)``
``wt = dwt3(x,wf,___)``

## Description

example

````wt = dwt3(x,wname)` returns the single-level three-dimensional wavelet decomposition `wt` of the input data `x` using the `wname` wavelet. The default extension mode of the 3-D discrete wavelet transform (DWT) is `'sym'` (see `dwtmode`).```
````wt = dwt3(x,wname,'mode',extM)` uses the extension mode `extM` (see `dwtmode`).```
````wt = dwt3(x,w,___)` specifies three wavelets, one for each direction. `w` is a cell array, string array, or structure, and can be followed by `'mode',extM`.```
````wt = dwt3(x,wf,___)` specifies four filters, two for decomposition and two for reconstruction, or 3 × 4 filters (one quadruplet by direction). `wf` is a cell array or structure, and can be followed by `'mode',extM`..```

## Examples

collapse all

Define the original 3-D data.

`X = reshape(1:64,4,4,4)`
```X = X(:,:,1) = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 X(:,:,2) = 17 21 25 29 18 22 26 30 19 23 27 31 20 24 28 32 X(:,:,3) = 33 37 41 45 34 38 42 46 35 39 43 47 36 40 44 48 X(:,:,4) = 49 53 57 61 50 54 58 62 51 55 59 63 52 56 60 64 ```

Perform single-level decomposition of `X` using `'db1'`.

`wt = dwt3(X,'db1')`
```wt = struct with fields: sizeINI: [4 4 4] filters: [1x1 struct] mode: 'sym' dec: {2x2x2 cell} ```

Decompose `X` using `'db2'`.

```[LoD,HiD,LoR,HiR] = wfilters('db2'); wt = dwt3(X,{LoD,HiD,LoR,HiR})```
```wt = struct with fields: sizeINI: [4 4 4] filters: [1x1 struct] mode: 'sym' dec: {2x2x2 cell} ```

Decompose `X` using different wavelets, one for each orientation: `'db1'`, `'db2'`, and again `'db1'`.

```WS = struct('w1','db1','w2','db2','w3','db1'); wt = dwt3(X,WS,'mode','per')```
```wt = struct with fields: sizeINI: [4 4 4] filters: [1x1 struct] mode: 'per' dec: {2x2x2 cell} ```

Decompose `X` using the filters given by `WF` and set the extension mode to symmetric.

```WF = wt.filters; wtBIS = dwt3(X,WF,'mode','sym')```
```wtBIS = struct with fields: sizeINI: [4 4 4] filters: [1x1 struct] mode: 'sym' dec: {2x2x2 cell} ```

## Input Arguments

collapse all

Input data, specified as a 3-D array.

Data Types: `double`

Analyzing wavelet used to compute the 3-D DWT, specified as a character vector or string scalar. The analyzing wavelet is from one of the following wavelet families: Best-localized Daubechies, Beylkin, Coiflets, Daubechies, Fejér-Korovkin, Haar, Han linear-phase moments, Morris minimum-bandwidth, Symlets, Vaidyanathan, Discrete Meyer, Biorthogonal, and Reverse Biorthogonal. See `wfilters` for the wavelets available in each family.

Analyzing wavelets to use in the 3-D wavelet decomposition, one for each direction, specified as a cell array of character vectors, a string array, or a structure. `w = {'wname1','wname2','wname3'}`, or `w = ["wname1","wname2","wname3"]`, or `w` is a structure with 3 fields `'w1'`, `'w2'`, `'w3'` containing character vectors or string scalars that are the names of wavelets.

Example: ```wt = dwt3(x,["db2","db4","db6"]);```

Wavelet filters to use in the 3-D wavelet decomposition, specified as either a cell array or structure. `wf` specifies four filters, two for decomposition and two for reconstruction, or 3 × 4 filters (one quadruplet by direction). `wf` is either a cell array (1 × 4) or (3 × 4) : `{LoD,HiD,LoR,HiR}` or a structure with the four fields `'LoD','HiD','LoR','HiR'`.

Extension mode used when performing the 3-D DWT, specified as one of the following:

`mode`

DWT Extension Mode

`'zpd'`

Zero extension

`'sp0'`

Smooth extension of order 0

`'spd'` (or``` 'sp1'```)

Smooth extension of order 1

`'sym'` or `'symh'`

Symmetric extension (half point): boundary value symmetric replication

`'symw'`

Symmetric extension (whole point): boundary value symmetric replication

`'asym'` or `'asymh'`

Antisymmetric extension (half point): boundary value antisymmetric replication

`'asymw'`

Antisymmetric extension (whole point): boundary value antisymmetric replication

`'ppd'`

Periodized extension (1)

`'per'`

Periodized extension (2)

If the signal length is odd, `wextend` adds to the right an extra sample that is equal to the last value, and performs the extension using the `'ppd'` mode. Otherwise, `'per'` reduces to `'ppd'`. This rule also applies to images.

The global variable managed by `dwtmode` specifies the default extension mode.

## Output Arguments

collapse all

Single-level 3-D wavelet decomposition, returned as a structure with the following fields:

 `sizeINI` Size of the three-dimensional array `X`. `mode` Name of the wavelet transform extension mode. `filters` Structure with four fields: `LoD`, `HiD`, `LoR`, `HiR`, which are the filters used for DWT. `dec` 2 × 2 × 2 cell array containing the coefficients of the decomposition.`dec{i,j,k}`, `i`,`j`,```k = 1``` or `2` contains the coefficients obtained by lowpass filtering (for `i` or `j` or `k = 1`) or highpass filtering (for `i` or `j` or `k = 2`).The `i` element filters along the rows of `X`, the `j` element filters along the columns, and the `k` element filters along the third dimension. For example, `dec{1,2,1}` is obtained by filtering `X` along the rows with the lowpass (scaling) filter, along the columns with the highpass (wavelet) filter, and along the third dimension with the lowpass (scaling) filter.

## Version History

Introduced in R2010a