Main Content

dwt3

Single-level 3-D discrete wavelet transform

Description

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).

example

wt = dwt3(x,wname,"mode",extmode) uses the extension mode extmode (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",extmode.

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",extmode..

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 the wavelet "db1". Inspect the filters in the output.

wt = dwt3(X,"db1");
wt.filters
ans = struct with fields:
    LoD: {[0.7071 0.7071]  [0.7071 0.7071]  [0.7071 0.7071]}
    HiD: {[-0.7071 0.7071]  [-0.7071 0.7071]  [-0.7071 0.7071]}
    LoR: {[0.7071 0.7071]  [0.7071 0.7071]  [0.7071 0.7071]}
    HiR: {[0.7071 -0.7071]  [0.7071 -0.7071]  [0.7071 -0.7071]}

Decompose X using the wavelet "db2".

[LoD,HiD,LoR,HiR] = wfilters("db2");
wt = dwt3(X,{LoD,HiD,LoR,HiR});
wt.filters
ans = struct with fields:
    LoD: {[-0.1294 0.2241 0.8365 0.4830]  [-0.1294 0.2241 0.8365 0.4830]  [-0.1294 0.2241 0.8365 0.4830]}
    HiD: {[-0.4830 0.8365 -0.2241 -0.1294]  [-0.4830 0.8365 -0.2241 -0.1294]  [-0.4830 0.8365 -0.2241 -0.1294]}
    LoR: {[0.4830 0.8365 0.2241 -0.1294]  [0.4830 0.8365 0.2241 -0.1294]  [0.4830 0.8365 0.2241 -0.1294]}
    HiR: {[-0.1294 -0.2241 0.8365 -0.4830]  [-0.1294 -0.2241 0.8365 -0.4830]  [-0.1294 -0.2241 0.8365 -0.4830]}

Decompose X using different wavelets, one for each orientation: "db1", "db2", and again "db1". Specify periodic extension.

WS = struct("w1","db1","w2","db2","w3","db1");
wt = dwt3(X,WS,"mode","per");
wt.filters
ans = struct with fields:
    LoD: {[0.7071 0.7071]  [-0.1294 0.2241 0.8365 0.4830]  [0.7071 0.7071]}
    HiD: {[-0.7071 0.7071]  [-0.4830 0.8365 -0.2241 -0.1294]  [-0.7071 0.7071]}
    LoR: {[0.7071 0.7071]  [0.4830 0.8365 0.2241 -0.1294]  [0.7071 0.7071]}
    HiR: {[0.7071 -0.7071]  [-0.1294 -0.2241 0.8365 -0.4830]  [0.7071 -0.7071]}

Decompose X using the filters given by WF and set the extension mode to half-point symmetric.

WF = wt.filters;
wtBIS = dwt3(X,WF,"mode","sym")
wtBIS = struct with fields:
    sizeINI: [4 4 4]
    filters: [1×1 struct]
       mode: 'sym'
        dec: {2×2×2 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 three fields, "w1", "w2", and "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-by-4) or (3-by-4) : {LoD,HiD,LoR,HiR} or a structure with the four fields "LoD", "HiD", "LoR", "HiR".

Extension mode used when performing the wavelet decomposition, specified as:

extmode

DWT Extension Mode

"zpd"

Zero padding

"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", "per"

Periodized extension

If the signal length is odd and mode is "per", an extra sample equal to the last value is added to the right and the extension is performed in "ppd" mode. If the signal length is even, "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-by-2-by-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