How to proceed from the level 2 and up in a Discrete Wavelet Transform Daubechies kind 4 The Next CEO of Stack OverflowHow to implement the Daubechies wavelet?Need to learn wavelet, suggest steps and resourcesImplementing 1D Discrete Wavelet Transform in MatlabWavelet transform and taking out of frequenciesBiorthogonal (discrete wavelet) noise bases?How can I analyse signal with discrete wavelet transform?Non-uniform convolution with discrete wavelet transformOrthogonal Discrete-Time Filter Banks for Discrete Wavelet TransformWavelets beside the Daubechies- and Meyer-wavelet?Help to understand wavelet basis on an interval proposed by Cohen, Daubechies and Vial.

Why does the UK parliament need a vote on the political declaration?

Complex fractions

Why did we only see the N-1 starfighters in one film?

Why don't programming languages automatically manage the synchronous/asynchronous problem?

If Nick Fury and Coulson already knew about aliens (Kree and Skrull) why did they wait until Thor's appearance to start making weapons?

A "random" question: usage of "random" as adjective in Spanish

Limits on contract work without pre-agreed price/contract (UK)

Example of a Mathematician/Physicist whose Other Publications during their PhD eclipsed their PhD Thesis

SQL Server 2016 - excessive memory grant warning on poor performing query

Is it ever safe to open a suspicious html file (e.g. email attachment)?

Preparing Indesign booklet with .psd graphics for print

What connection does MS Office have to Netscape Navigator?

Why do airplanes bank sharply to the right after air-to-air refueling?

Why do professional authors make "consistency" mistakes? And how to avoid them?

How did the Bene Gesserit know how to make a Kwisatz Haderach?

How do we know the LHC results are robust?

Does it take more energy to get to Venus or to Mars?

Skipping indices in a product

Why does standard notation not preserve intervals (visually)

How fast would a person need to move to trick the eye?

Elegant way to replace substring in a regex with optional groups in Python?

Won the lottery - how do I keep the money?

I believe this to be a fraud - hired, then asked to cash check and send cash as Bitcoin

How to count occurrences of text in a file?



How to proceed from the level 2 and up in a Discrete Wavelet Transform Daubechies kind 4



The Next CEO of Stack OverflowHow to implement the Daubechies wavelet?Need to learn wavelet, suggest steps and resourcesImplementing 1D Discrete Wavelet Transform in MatlabWavelet transform and taking out of frequenciesBiorthogonal (discrete wavelet) noise bases?How can I analyse signal with discrete wavelet transform?Non-uniform convolution with discrete wavelet transformOrthogonal Discrete-Time Filter Banks for Discrete Wavelet TransformWavelets beside the Daubechies- and Meyer-wavelet?Help to understand wavelet basis on an interval proposed by Cohen, Daubechies and Vial.










1












$begingroup$


The wavelet elements of a Daubechies kind 4 are



$$(0.4830, 0.8365, 0.2241, -0.1294) $$



Let's say I have the following signal array



$$ [1, 2, 0, 4, 5, 6, 8, 10 ]$$



Doing a Daubechies 4 DWT of this array is basically multiplying a $8times 8$ array with a $8times 1$ array (signal).



The $8times1$ array will have the following elements,
beginarraycccc 0.483 & 0.8365 &0.2241 &-0.1294 &0 &0 &0 &0 \
0 &0 &0.483 &0.8365 &0.2241 &-0.1294 &0 &0 \
0 &0 &0 &0 &0.483 &0.8365 &0.2241 &-0.1294 \
0.2241 &-0.1294 &0 &0 &0 &0 &0.483 &0.8365 \
-0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 &0 &0 \
0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 \
0 &0 &0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 \
0.8365 &-0.483 &0 &0 &0 &0 &-0.1294 &-0.2241 \
endarray



The result will be



for the scaling function...



- 0 : 1.638357430415108
- 1 : 3.6903274198537357
- 2 : 7.9329681069730205
- 3 : 12.194191165473843


for the wavelet



- 0 : -2.5095489112134235
- 1 : 0.3882285676537802
- 2 : -0.1294095225512608
- 3 : -3.4061243833814774


Sorry but my math is rusty. I don't know the exact terms for these two elements that come from the DWT decomposition. Some call, scaling function and wavelet, others call trend subsignal and fluctuation, others call c and d... etc.



Anyway, now I need to perform another level of DWT DB4, what values do I send to the algorithm that will perform the decomposition? The scaling function c or the wavelet d?



and what about the inverse transformations?










share|cite|improve this question











$endgroup$
















    1












    $begingroup$


    The wavelet elements of a Daubechies kind 4 are



    $$(0.4830, 0.8365, 0.2241, -0.1294) $$



    Let's say I have the following signal array



    $$ [1, 2, 0, 4, 5, 6, 8, 10 ]$$



    Doing a Daubechies 4 DWT of this array is basically multiplying a $8times 8$ array with a $8times 1$ array (signal).



    The $8times1$ array will have the following elements,
    beginarraycccc 0.483 & 0.8365 &0.2241 &-0.1294 &0 &0 &0 &0 \
    0 &0 &0.483 &0.8365 &0.2241 &-0.1294 &0 &0 \
    0 &0 &0 &0 &0.483 &0.8365 &0.2241 &-0.1294 \
    0.2241 &-0.1294 &0 &0 &0 &0 &0.483 &0.8365 \
    -0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 &0 &0 \
    0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 \
    0 &0 &0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 \
    0.8365 &-0.483 &0 &0 &0 &0 &-0.1294 &-0.2241 \
    endarray



    The result will be



    for the scaling function...



    - 0 : 1.638357430415108
    - 1 : 3.6903274198537357
    - 2 : 7.9329681069730205
    - 3 : 12.194191165473843


    for the wavelet



    - 0 : -2.5095489112134235
    - 1 : 0.3882285676537802
    - 2 : -0.1294095225512608
    - 3 : -3.4061243833814774


    Sorry but my math is rusty. I don't know the exact terms for these two elements that come from the DWT decomposition. Some call, scaling function and wavelet, others call trend subsignal and fluctuation, others call c and d... etc.



    Anyway, now I need to perform another level of DWT DB4, what values do I send to the algorithm that will perform the decomposition? The scaling function c or the wavelet d?



    and what about the inverse transformations?










    share|cite|improve this question











    $endgroup$














      1












      1








      1


      1



      $begingroup$


      The wavelet elements of a Daubechies kind 4 are



      $$(0.4830, 0.8365, 0.2241, -0.1294) $$



      Let's say I have the following signal array



      $$ [1, 2, 0, 4, 5, 6, 8, 10 ]$$



      Doing a Daubechies 4 DWT of this array is basically multiplying a $8times 8$ array with a $8times 1$ array (signal).



      The $8times1$ array will have the following elements,
      beginarraycccc 0.483 & 0.8365 &0.2241 &-0.1294 &0 &0 &0 &0 \
      0 &0 &0.483 &0.8365 &0.2241 &-0.1294 &0 &0 \
      0 &0 &0 &0 &0.483 &0.8365 &0.2241 &-0.1294 \
      0.2241 &-0.1294 &0 &0 &0 &0 &0.483 &0.8365 \
      -0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 &0 &0 \
      0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 \
      0 &0 &0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 \
      0.8365 &-0.483 &0 &0 &0 &0 &-0.1294 &-0.2241 \
      endarray



      The result will be



      for the scaling function...



      - 0 : 1.638357430415108
      - 1 : 3.6903274198537357
      - 2 : 7.9329681069730205
      - 3 : 12.194191165473843


      for the wavelet



      - 0 : -2.5095489112134235
      - 1 : 0.3882285676537802
      - 2 : -0.1294095225512608
      - 3 : -3.4061243833814774


      Sorry but my math is rusty. I don't know the exact terms for these two elements that come from the DWT decomposition. Some call, scaling function and wavelet, others call trend subsignal and fluctuation, others call c and d... etc.



      Anyway, now I need to perform another level of DWT DB4, what values do I send to the algorithm that will perform the decomposition? The scaling function c or the wavelet d?



      and what about the inverse transformations?










      share|cite|improve this question











      $endgroup$




      The wavelet elements of a Daubechies kind 4 are



      $$(0.4830, 0.8365, 0.2241, -0.1294) $$



      Let's say I have the following signal array



      $$ [1, 2, 0, 4, 5, 6, 8, 10 ]$$



      Doing a Daubechies 4 DWT of this array is basically multiplying a $8times 8$ array with a $8times 1$ array (signal).



      The $8times1$ array will have the following elements,
      beginarraycccc 0.483 & 0.8365 &0.2241 &-0.1294 &0 &0 &0 &0 \
      0 &0 &0.483 &0.8365 &0.2241 &-0.1294 &0 &0 \
      0 &0 &0 &0 &0.483 &0.8365 &0.2241 &-0.1294 \
      0.2241 &-0.1294 &0 &0 &0 &0 &0.483 &0.8365 \
      -0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 &0 &0 \
      0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 &0 &0 \
      0 &0 &0 &0 &-0.1294 &-0.2241 &0.8365 &-0.483 \
      0.8365 &-0.483 &0 &0 &0 &0 &-0.1294 &-0.2241 \
      endarray



      The result will be



      for the scaling function...



      - 0 : 1.638357430415108
      - 1 : 3.6903274198537357
      - 2 : 7.9329681069730205
      - 3 : 12.194191165473843


      for the wavelet



      - 0 : -2.5095489112134235
      - 1 : 0.3882285676537802
      - 2 : -0.1294095225512608
      - 3 : -3.4061243833814774


      Sorry but my math is rusty. I don't know the exact terms for these two elements that come from the DWT decomposition. Some call, scaling function and wavelet, others call trend subsignal and fluctuation, others call c and d... etc.



      Anyway, now I need to perform another level of DWT DB4, what values do I send to the algorithm that will perform the decomposition? The scaling function c or the wavelet d?



      and what about the inverse transformations?







      wavelets






      share|cite|improve this question















      share|cite|improve this question













      share|cite|improve this question




      share|cite|improve this question








      edited Mar 19 at 2:07









      Ethan Bolker

      45.5k553120




      45.5k553120










      asked Mar 18 at 19:13









      SpaceDogSpaceDog

      147119




      147119




















          1 Answer
          1






          active

          oldest

          votes


















          1












          $begingroup$

          The inverse of this step of the transform will be the inverse matrix to the matrix you wrote above. Mechanically just build a matrix of the values you wrote, and then invert this matrix. The Db4 should be designed so that this inverse matrix will be the same (up to maybe a scaling / normalization factor / transpose), which is what makes orthogonal wavelets so simple to use. We only need one filter pair two short arrays of numbers.



          Makes programming simpler and/or memory overheads slimmer than if we needed separate filters for forward and backward transform.



          Usually in discrete wavelet transforms you iterate on the low-pass channel, which is the output from the scaling function or father wavelet. This is called dyadic decomposition, You can read more here. At every level you don't stop you will only have "result" of the mother wavelet. These are the "detail" coefficients at this level of resolution. At the lowest level of resolution (where you stop the transform) you will also have "approximation" coefficients, which come from the father wavelet function belonging this coarsest scale.



          There also exist wavelet packet analysis, where you can iterate also on the high-pass band (where mother wavelets live) and not only on the low-pass band (where father wavelets live). But these packet analyses are probably a bit over-course.



          What happens at next level is that for the coefficients of the high pass filter you put an identity matrix $I$ and for the coefficients of the low pass filter coefficients you put a subsampled version of original matrix.



          We can see by ocular inspection that high pass filter comes last in the 8x8 matrix, so those are the elements which will be affected by the $I_4$ block.
          $$beginbmatrixD&0\0&I_4endbmatrix$$



          The "$D$" here will be the 4x4 size transform matrix for Db4. If we write it out it will look like this:



          $$left[beginarraycccc0.483&0.8365&0.2241&-0.1294&0&0&0&0\0.2241&-0.1294&0.483&0.8365&0&0&0&0\ -0.1294&-0.2241&0.8365&-0.483&0&0&0&0\0.8365&-0.483&-0.1294&-0.2241&0&0&0&0\hline0&0&0&0&1&0&0&0\0&0&0&0&0&1&0&0\0&0&0&0&0&0&1&0\0&0&0&0&0&0&0&1endarrayright]$$



          With lines to clarify the block-structure. Now when you have both transform matrices, what remains is to find their inverses, and for ON transform, Inverse is equal to transpose, so this is easily done.






          share|cite|improve this answer











          $endgroup$












          • $begingroup$
            Thanks for the answer but this is my problem. Suppose I take an array with 8 elements and decompose it with DWT DB4. I get two arrays with 4 elements. Let's call it a and b. Then I take one of these arrays and decompose again. I get two arrays with 2 elements, let's call it c and d. I cannot continue anymore because I have reached 2 elements. Now it is time to reverse it. I take c and d and inverse transform it, getting an array with 4 elements. How can I inverse transform again now? I only have one array with 4 elements... I need a second array of 4 elements.
            $endgroup$
            – SpaceDog
            Mar 18 at 20:40











          • $begingroup$
            You don't "throw away" the 4 detail coefficients you get from the first level, you keep them in the vector for later, when you get back to inverse transforming at first level. Do you know about block-diagonal matrices?
            $endgroup$
            – mathreadler
            Mar 18 at 20:42











          • $begingroup$
            @SpaceDog second level will be a matrix with the block matrix structure I describe in edited answer.
            $endgroup$
            – mathreadler
            Mar 18 at 20:56










          • $begingroup$
            Sorry, my math is rusty. After the first decomposition I have two 4x4 arrays, shown in my question. The first is scaling factor. Should I inject that into the same algorithm and obtain two a 2x2 matrices? and what happens on the way back? Please explain using the numbers I have provided...
            $endgroup$
            – SpaceDog
            Mar 18 at 20:57







          • 1




            $begingroup$
            brilliant!!!!!!!!!!! thanks. Fantastic explanation.
            $endgroup$
            – SpaceDog
            Mar 19 at 14:43











          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "69"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          noCode: true, onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3153191%2fhow-to-proceed-from-the-level-2-and-up-in-a-discrete-wavelet-transform-daubechie%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1












          $begingroup$

          The inverse of this step of the transform will be the inverse matrix to the matrix you wrote above. Mechanically just build a matrix of the values you wrote, and then invert this matrix. The Db4 should be designed so that this inverse matrix will be the same (up to maybe a scaling / normalization factor / transpose), which is what makes orthogonal wavelets so simple to use. We only need one filter pair two short arrays of numbers.



          Makes programming simpler and/or memory overheads slimmer than if we needed separate filters for forward and backward transform.



          Usually in discrete wavelet transforms you iterate on the low-pass channel, which is the output from the scaling function or father wavelet. This is called dyadic decomposition, You can read more here. At every level you don't stop you will only have "result" of the mother wavelet. These are the "detail" coefficients at this level of resolution. At the lowest level of resolution (where you stop the transform) you will also have "approximation" coefficients, which come from the father wavelet function belonging this coarsest scale.



          There also exist wavelet packet analysis, where you can iterate also on the high-pass band (where mother wavelets live) and not only on the low-pass band (where father wavelets live). But these packet analyses are probably a bit over-course.



          What happens at next level is that for the coefficients of the high pass filter you put an identity matrix $I$ and for the coefficients of the low pass filter coefficients you put a subsampled version of original matrix.



          We can see by ocular inspection that high pass filter comes last in the 8x8 matrix, so those are the elements which will be affected by the $I_4$ block.
          $$beginbmatrixD&0\0&I_4endbmatrix$$



          The "$D$" here will be the 4x4 size transform matrix for Db4. If we write it out it will look like this:



          $$left[beginarraycccc0.483&0.8365&0.2241&-0.1294&0&0&0&0\0.2241&-0.1294&0.483&0.8365&0&0&0&0\ -0.1294&-0.2241&0.8365&-0.483&0&0&0&0\0.8365&-0.483&-0.1294&-0.2241&0&0&0&0\hline0&0&0&0&1&0&0&0\0&0&0&0&0&1&0&0\0&0&0&0&0&0&1&0\0&0&0&0&0&0&0&1endarrayright]$$



          With lines to clarify the block-structure. Now when you have both transform matrices, what remains is to find their inverses, and for ON transform, Inverse is equal to transpose, so this is easily done.






          share|cite|improve this answer











          $endgroup$












          • $begingroup$
            Thanks for the answer but this is my problem. Suppose I take an array with 8 elements and decompose it with DWT DB4. I get two arrays with 4 elements. Let's call it a and b. Then I take one of these arrays and decompose again. I get two arrays with 2 elements, let's call it c and d. I cannot continue anymore because I have reached 2 elements. Now it is time to reverse it. I take c and d and inverse transform it, getting an array with 4 elements. How can I inverse transform again now? I only have one array with 4 elements... I need a second array of 4 elements.
            $endgroup$
            – SpaceDog
            Mar 18 at 20:40











          • $begingroup$
            You don't "throw away" the 4 detail coefficients you get from the first level, you keep them in the vector for later, when you get back to inverse transforming at first level. Do you know about block-diagonal matrices?
            $endgroup$
            – mathreadler
            Mar 18 at 20:42











          • $begingroup$
            @SpaceDog second level will be a matrix with the block matrix structure I describe in edited answer.
            $endgroup$
            – mathreadler
            Mar 18 at 20:56










          • $begingroup$
            Sorry, my math is rusty. After the first decomposition I have two 4x4 arrays, shown in my question. The first is scaling factor. Should I inject that into the same algorithm and obtain two a 2x2 matrices? and what happens on the way back? Please explain using the numbers I have provided...
            $endgroup$
            – SpaceDog
            Mar 18 at 20:57







          • 1




            $begingroup$
            brilliant!!!!!!!!!!! thanks. Fantastic explanation.
            $endgroup$
            – SpaceDog
            Mar 19 at 14:43















          1












          $begingroup$

          The inverse of this step of the transform will be the inverse matrix to the matrix you wrote above. Mechanically just build a matrix of the values you wrote, and then invert this matrix. The Db4 should be designed so that this inverse matrix will be the same (up to maybe a scaling / normalization factor / transpose), which is what makes orthogonal wavelets so simple to use. We only need one filter pair two short arrays of numbers.



          Makes programming simpler and/or memory overheads slimmer than if we needed separate filters for forward and backward transform.



          Usually in discrete wavelet transforms you iterate on the low-pass channel, which is the output from the scaling function or father wavelet. This is called dyadic decomposition, You can read more here. At every level you don't stop you will only have "result" of the mother wavelet. These are the "detail" coefficients at this level of resolution. At the lowest level of resolution (where you stop the transform) you will also have "approximation" coefficients, which come from the father wavelet function belonging this coarsest scale.



          There also exist wavelet packet analysis, where you can iterate also on the high-pass band (where mother wavelets live) and not only on the low-pass band (where father wavelets live). But these packet analyses are probably a bit over-course.



          What happens at next level is that for the coefficients of the high pass filter you put an identity matrix $I$ and for the coefficients of the low pass filter coefficients you put a subsampled version of original matrix.



          We can see by ocular inspection that high pass filter comes last in the 8x8 matrix, so those are the elements which will be affected by the $I_4$ block.
          $$beginbmatrixD&0\0&I_4endbmatrix$$



          The "$D$" here will be the 4x4 size transform matrix for Db4. If we write it out it will look like this:



          $$left[beginarraycccc0.483&0.8365&0.2241&-0.1294&0&0&0&0\0.2241&-0.1294&0.483&0.8365&0&0&0&0\ -0.1294&-0.2241&0.8365&-0.483&0&0&0&0\0.8365&-0.483&-0.1294&-0.2241&0&0&0&0\hline0&0&0&0&1&0&0&0\0&0&0&0&0&1&0&0\0&0&0&0&0&0&1&0\0&0&0&0&0&0&0&1endarrayright]$$



          With lines to clarify the block-structure. Now when you have both transform matrices, what remains is to find their inverses, and for ON transform, Inverse is equal to transpose, so this is easily done.






          share|cite|improve this answer











          $endgroup$












          • $begingroup$
            Thanks for the answer but this is my problem. Suppose I take an array with 8 elements and decompose it with DWT DB4. I get two arrays with 4 elements. Let's call it a and b. Then I take one of these arrays and decompose again. I get two arrays with 2 elements, let's call it c and d. I cannot continue anymore because I have reached 2 elements. Now it is time to reverse it. I take c and d and inverse transform it, getting an array with 4 elements. How can I inverse transform again now? I only have one array with 4 elements... I need a second array of 4 elements.
            $endgroup$
            – SpaceDog
            Mar 18 at 20:40











          • $begingroup$
            You don't "throw away" the 4 detail coefficients you get from the first level, you keep them in the vector for later, when you get back to inverse transforming at first level. Do you know about block-diagonal matrices?
            $endgroup$
            – mathreadler
            Mar 18 at 20:42











          • $begingroup$
            @SpaceDog second level will be a matrix with the block matrix structure I describe in edited answer.
            $endgroup$
            – mathreadler
            Mar 18 at 20:56










          • $begingroup$
            Sorry, my math is rusty. After the first decomposition I have two 4x4 arrays, shown in my question. The first is scaling factor. Should I inject that into the same algorithm and obtain two a 2x2 matrices? and what happens on the way back? Please explain using the numbers I have provided...
            $endgroup$
            – SpaceDog
            Mar 18 at 20:57







          • 1




            $begingroup$
            brilliant!!!!!!!!!!! thanks. Fantastic explanation.
            $endgroup$
            – SpaceDog
            Mar 19 at 14:43













          1












          1








          1





          $begingroup$

          The inverse of this step of the transform will be the inverse matrix to the matrix you wrote above. Mechanically just build a matrix of the values you wrote, and then invert this matrix. The Db4 should be designed so that this inverse matrix will be the same (up to maybe a scaling / normalization factor / transpose), which is what makes orthogonal wavelets so simple to use. We only need one filter pair two short arrays of numbers.



          Makes programming simpler and/or memory overheads slimmer than if we needed separate filters for forward and backward transform.



          Usually in discrete wavelet transforms you iterate on the low-pass channel, which is the output from the scaling function or father wavelet. This is called dyadic decomposition, You can read more here. At every level you don't stop you will only have "result" of the mother wavelet. These are the "detail" coefficients at this level of resolution. At the lowest level of resolution (where you stop the transform) you will also have "approximation" coefficients, which come from the father wavelet function belonging this coarsest scale.



          There also exist wavelet packet analysis, where you can iterate also on the high-pass band (where mother wavelets live) and not only on the low-pass band (where father wavelets live). But these packet analyses are probably a bit over-course.



          What happens at next level is that for the coefficients of the high pass filter you put an identity matrix $I$ and for the coefficients of the low pass filter coefficients you put a subsampled version of original matrix.



          We can see by ocular inspection that high pass filter comes last in the 8x8 matrix, so those are the elements which will be affected by the $I_4$ block.
          $$beginbmatrixD&0\0&I_4endbmatrix$$



          The "$D$" here will be the 4x4 size transform matrix for Db4. If we write it out it will look like this:



          $$left[beginarraycccc0.483&0.8365&0.2241&-0.1294&0&0&0&0\0.2241&-0.1294&0.483&0.8365&0&0&0&0\ -0.1294&-0.2241&0.8365&-0.483&0&0&0&0\0.8365&-0.483&-0.1294&-0.2241&0&0&0&0\hline0&0&0&0&1&0&0&0\0&0&0&0&0&1&0&0\0&0&0&0&0&0&1&0\0&0&0&0&0&0&0&1endarrayright]$$



          With lines to clarify the block-structure. Now when you have both transform matrices, what remains is to find their inverses, and for ON transform, Inverse is equal to transpose, so this is easily done.






          share|cite|improve this answer











          $endgroup$



          The inverse of this step of the transform will be the inverse matrix to the matrix you wrote above. Mechanically just build a matrix of the values you wrote, and then invert this matrix. The Db4 should be designed so that this inverse matrix will be the same (up to maybe a scaling / normalization factor / transpose), which is what makes orthogonal wavelets so simple to use. We only need one filter pair two short arrays of numbers.



          Makes programming simpler and/or memory overheads slimmer than if we needed separate filters for forward and backward transform.



          Usually in discrete wavelet transforms you iterate on the low-pass channel, which is the output from the scaling function or father wavelet. This is called dyadic decomposition, You can read more here. At every level you don't stop you will only have "result" of the mother wavelet. These are the "detail" coefficients at this level of resolution. At the lowest level of resolution (where you stop the transform) you will also have "approximation" coefficients, which come from the father wavelet function belonging this coarsest scale.



          There also exist wavelet packet analysis, where you can iterate also on the high-pass band (where mother wavelets live) and not only on the low-pass band (where father wavelets live). But these packet analyses are probably a bit over-course.



          What happens at next level is that for the coefficients of the high pass filter you put an identity matrix $I$ and for the coefficients of the low pass filter coefficients you put a subsampled version of original matrix.



          We can see by ocular inspection that high pass filter comes last in the 8x8 matrix, so those are the elements which will be affected by the $I_4$ block.
          $$beginbmatrixD&0\0&I_4endbmatrix$$



          The "$D$" here will be the 4x4 size transform matrix for Db4. If we write it out it will look like this:



          $$left[beginarraycccc0.483&0.8365&0.2241&-0.1294&0&0&0&0\0.2241&-0.1294&0.483&0.8365&0&0&0&0\ -0.1294&-0.2241&0.8365&-0.483&0&0&0&0\0.8365&-0.483&-0.1294&-0.2241&0&0&0&0\hline0&0&0&0&1&0&0&0\0&0&0&0&0&1&0&0\0&0&0&0&0&0&1&0\0&0&0&0&0&0&0&1endarrayright]$$



          With lines to clarify the block-structure. Now when you have both transform matrices, what remains is to find their inverses, and for ON transform, Inverse is equal to transpose, so this is easily done.







          share|cite|improve this answer














          share|cite|improve this answer



          share|cite|improve this answer








          edited Mar 19 at 2:06

























          answered Mar 18 at 20:17









          mathreadlermathreadler

          15.3k72263




          15.3k72263











          • $begingroup$
            Thanks for the answer but this is my problem. Suppose I take an array with 8 elements and decompose it with DWT DB4. I get two arrays with 4 elements. Let's call it a and b. Then I take one of these arrays and decompose again. I get two arrays with 2 elements, let's call it c and d. I cannot continue anymore because I have reached 2 elements. Now it is time to reverse it. I take c and d and inverse transform it, getting an array with 4 elements. How can I inverse transform again now? I only have one array with 4 elements... I need a second array of 4 elements.
            $endgroup$
            – SpaceDog
            Mar 18 at 20:40











          • $begingroup$
            You don't "throw away" the 4 detail coefficients you get from the first level, you keep them in the vector for later, when you get back to inverse transforming at first level. Do you know about block-diagonal matrices?
            $endgroup$
            – mathreadler
            Mar 18 at 20:42











          • $begingroup$
            @SpaceDog second level will be a matrix with the block matrix structure I describe in edited answer.
            $endgroup$
            – mathreadler
            Mar 18 at 20:56










          • $begingroup$
            Sorry, my math is rusty. After the first decomposition I have two 4x4 arrays, shown in my question. The first is scaling factor. Should I inject that into the same algorithm and obtain two a 2x2 matrices? and what happens on the way back? Please explain using the numbers I have provided...
            $endgroup$
            – SpaceDog
            Mar 18 at 20:57







          • 1




            $begingroup$
            brilliant!!!!!!!!!!! thanks. Fantastic explanation.
            $endgroup$
            – SpaceDog
            Mar 19 at 14:43
















          • $begingroup$
            Thanks for the answer but this is my problem. Suppose I take an array with 8 elements and decompose it with DWT DB4. I get two arrays with 4 elements. Let's call it a and b. Then I take one of these arrays and decompose again. I get two arrays with 2 elements, let's call it c and d. I cannot continue anymore because I have reached 2 elements. Now it is time to reverse it. I take c and d and inverse transform it, getting an array with 4 elements. How can I inverse transform again now? I only have one array with 4 elements... I need a second array of 4 elements.
            $endgroup$
            – SpaceDog
            Mar 18 at 20:40











          • $begingroup$
            You don't "throw away" the 4 detail coefficients you get from the first level, you keep them in the vector for later, when you get back to inverse transforming at first level. Do you know about block-diagonal matrices?
            $endgroup$
            – mathreadler
            Mar 18 at 20:42











          • $begingroup$
            @SpaceDog second level will be a matrix with the block matrix structure I describe in edited answer.
            $endgroup$
            – mathreadler
            Mar 18 at 20:56










          • $begingroup$
            Sorry, my math is rusty. After the first decomposition I have two 4x4 arrays, shown in my question. The first is scaling factor. Should I inject that into the same algorithm and obtain two a 2x2 matrices? and what happens on the way back? Please explain using the numbers I have provided...
            $endgroup$
            – SpaceDog
            Mar 18 at 20:57







          • 1




            $begingroup$
            brilliant!!!!!!!!!!! thanks. Fantastic explanation.
            $endgroup$
            – SpaceDog
            Mar 19 at 14:43















          $begingroup$
          Thanks for the answer but this is my problem. Suppose I take an array with 8 elements and decompose it with DWT DB4. I get two arrays with 4 elements. Let's call it a and b. Then I take one of these arrays and decompose again. I get two arrays with 2 elements, let's call it c and d. I cannot continue anymore because I have reached 2 elements. Now it is time to reverse it. I take c and d and inverse transform it, getting an array with 4 elements. How can I inverse transform again now? I only have one array with 4 elements... I need a second array of 4 elements.
          $endgroup$
          – SpaceDog
          Mar 18 at 20:40





          $begingroup$
          Thanks for the answer but this is my problem. Suppose I take an array with 8 elements and decompose it with DWT DB4. I get two arrays with 4 elements. Let's call it a and b. Then I take one of these arrays and decompose again. I get two arrays with 2 elements, let's call it c and d. I cannot continue anymore because I have reached 2 elements. Now it is time to reverse it. I take c and d and inverse transform it, getting an array with 4 elements. How can I inverse transform again now? I only have one array with 4 elements... I need a second array of 4 elements.
          $endgroup$
          – SpaceDog
          Mar 18 at 20:40













          $begingroup$
          You don't "throw away" the 4 detail coefficients you get from the first level, you keep them in the vector for later, when you get back to inverse transforming at first level. Do you know about block-diagonal matrices?
          $endgroup$
          – mathreadler
          Mar 18 at 20:42





          $begingroup$
          You don't "throw away" the 4 detail coefficients you get from the first level, you keep them in the vector for later, when you get back to inverse transforming at first level. Do you know about block-diagonal matrices?
          $endgroup$
          – mathreadler
          Mar 18 at 20:42













          $begingroup$
          @SpaceDog second level will be a matrix with the block matrix structure I describe in edited answer.
          $endgroup$
          – mathreadler
          Mar 18 at 20:56




          $begingroup$
          @SpaceDog second level will be a matrix with the block matrix structure I describe in edited answer.
          $endgroup$
          – mathreadler
          Mar 18 at 20:56












          $begingroup$
          Sorry, my math is rusty. After the first decomposition I have two 4x4 arrays, shown in my question. The first is scaling factor. Should I inject that into the same algorithm and obtain two a 2x2 matrices? and what happens on the way back? Please explain using the numbers I have provided...
          $endgroup$
          – SpaceDog
          Mar 18 at 20:57





          $begingroup$
          Sorry, my math is rusty. After the first decomposition I have two 4x4 arrays, shown in my question. The first is scaling factor. Should I inject that into the same algorithm and obtain two a 2x2 matrices? and what happens on the way back? Please explain using the numbers I have provided...
          $endgroup$
          – SpaceDog
          Mar 18 at 20:57





          1




          1




          $begingroup$
          brilliant!!!!!!!!!!! thanks. Fantastic explanation.
          $endgroup$
          – SpaceDog
          Mar 19 at 14:43




          $begingroup$
          brilliant!!!!!!!!!!! thanks. Fantastic explanation.
          $endgroup$
          – SpaceDog
          Mar 19 at 14:43

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Mathematics Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3153191%2fhow-to-proceed-from-the-level-2-and-up-in-a-discrete-wavelet-transform-daubechie%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Moe incest case Sentencing See also References Navigation menu"'Australian Josef Fritzl' fathered four children by daughter""Small town recoils in horror at 'Australian Fritzl' incest case""Victorian rape allegations echo Fritzl case - Just In (Australian Broadcasting Corporation)""Incest father jailed for 22 years""'Australian Fritzl' sentenced to 22 years in prison for abusing daughter for three decades""RSJ v The Queen"

          Who is our nearest planetary neighbor, on average?Santa Claus flies to the South PoleSeven Spheres of Unequal Mass, a weighing problem with a twistDescribe a large integerFast Mental Calculation of $7.5^7$Math in Space (without the help of celebrities)Find the value of $bigstar$: Puzzle 8 - InequalityWho drinks beer while running anyway?A Crucial DeliveryRanking And AverageHow long will my money last at roulette?

          Daza language Contents Vocabulary Phonology References External links Navigation menudaza1242Daza"Dazaga"eeee178086576