I'm trying to implement some watermarking algorithm found in a paper*. This is a line of the paper:

Do the H-level DWT for all the renumbered segments.

Then in simulation section the author explains the wavelet used for experiments.

DWT transform adopted the common wavelet "Daubechies-1" and level H = 3.

I just don't get what does H means, how do I input H=3 in matlab DWT function?

My actual code is:

[cA,cD] = dwt(audio,'db1');

Can someone help me?

*Ji, Y. & Kim, J. A Quantified Audio Watermarking Algorithm Based on DWT-DCT. Multimedia, Computer Graphics and Broadcasting 339–344 (2011)


1 Answer 1


intuitively speaking, H-level define how many level of DWT you need to perform on your signal in this case you need to perform 3rd level "Daubechies-1" wavelet Transform on your Signal, what that really mean is applying DWT on your signal 3 times,

This is how you are suppose to do that,

Apply DWT on your Signal to decompose it into Approximations (low-frequency) and Details (High-frequency). This is level 1 decomposition, according to your requirements we need to perform level 3 DWT therefore we will pick the Approximation(lets say a1) of the above decomposed signal and again apply DWT to decompose it into more deep Approximations (let say a2) and details (d2), Now do it one more time for level 3.

this is simple demonstration I've done using Matlab Wavelet toolbox,

enter image description here

S is the original signal (noissin in this case; which is a built-in waveform in matlab) which is decomposed in a1 and d1 we then picked a1 and applied DWT on this signal again to get a2 and d2; a2 is further decomposed in a3 and d3.

here is the tree view of what i said earlier.

enter image description here

In order to better understand how Wavelet transform works, type wavemenu in the matlab command window then go to Wavelet 1-D option, load any built-in signal and play around.

The built-in signal can be found in Matlab Directory -> toolbox -> wavelet -> wavedemo folder.

In order to perform perform level 3 decomposition in matlab I'd rather prefer wavedec instead of dwt because the syntax is far more easier and well explained,

here is the syntax for wavedec

[C,L] = wavedec(X,N,'wname')


X = your Signal to decompose.

N = Level; in your case it should be 3.

wname = Wavelet to use; in your case it should be 'db1'

% L is the matrix that store length of each decomposed signal
% This is how it will be stored in Matrix of [C,L]
% C: |cA3|cD3|cD2|cD1|
% L: | (length cA3) | (length of cD3) | (length of cD2) | (length of cD1) |
  • $\begingroup$ Sorry, for some reason I haven't seen your answer. Thank you. $\endgroup$ Nov 21, 2013 at 18:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.