Main Content


Morris minimum-bandwidth discrete-time wavelets

Since R2022b



    scalf = mbscalf(wname) returns the Morris minimum-bandwidth scaling filter specified by wname.


    The orthogonal wavelets that mbscalf creates do not pass the default orthogonality checks in isorthwfb. You can test for orthogonality with a relaxed tolerance.


    collapse all

    Obtain the scaling filter corresponding to the Morris minimum-bandwidth wavelet with 10 taps and optimized using a level 3 discrete wavelet transform.

    scalf = mbscalf("mb10.3");

    Use orthfilt to obtain the scaling and wavelet filters corresponding to the wavelet.

    [LoD,HiD,LoR,HiR] = orthfilt(scalf);

    This wavelet filter does not pass the default orthogonality check in isorthwfb. Test for orthogonality with a relaxed tolerance.

    [tf,check] = isorthwfb(LoD,Tolerance=1e-7)
    tf = logical
    check=7×3 table
                                              Pass-Fail    Maximum Error    Test Tolerance
                                              _________    _____________    ______________
        Equal-length filters                    pass                 0              0     
        Even-length filters                     pass                 0              0     
        Unit-norm filters                       pass        5.0067e-08          1e-07     
        Filter sums                             pass             2e-09          1e-07     
        Even and odd downsampled sums           pass             1e-09          1e-07     
        Zero autocorrelation at even lags       pass        2.5884e-08          1e-07     
        Zero crosscorrelation at even lags      pass        2.0579e-17          1e-07     

    Create a discrete wavelet transform filter bank using the wavelet. Specify a single level of decomposition. Plot the one-sided magnitude frequency responses of the filter bank.

    fb = dwtfilterbank(Wavelet="mb10.3",Level=1);

    Input Arguments

    collapse all

    Morris minimum-bandwidth scaling filter, specified as "mbN.L", where N is the number of filter coefficients (taps), and L is the level of the discrete wavelet transform used in the optimization. wname can be one of these values:

    • "mb4.2", "mb8.2"

    • "mb8.3", "mb10.3", "mb12.3", "mb14.3", "mb16.3", "mb18.3", "mb24.3", "mb32.3"

    • "mb8.4"

    Output Arguments

    collapse all

    Scaling filter corresponding to wname, returned as a vector. scalf should be used in conjunction with orthfilt to obtain scaling and wavelet filters with the proper normalization.

    Data Types: double


    [1] Morris, Joel M, and Ravindra Peravali. “Minimum-Bandwidth Discrete-Time Wavelets.” Signal Processing 76, no. 2 (July 1999): 181–93.

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2022b