wavelet decomposition of a signal

14 views (last 30 days)
m on 18 Aug 2013
Commented: Afiqah Abu Samah on 15 Mar 2017
hi, i want to decompose a signal with wavelet in 5 subbands:
delta (0–4 Hz), theta (4–8 Hz), alpha (8–15 Hz), beta (15–30 Hz), and gamma (30–60 Hz) ,use db4"_
i found wavelet toolbox menu but cant use it,can you help me?

Answers (2)

Jan on 18 Aug 2013
Use wavedec() to calculate the wavelet decomposition and wenergy to extract the energie in the decomposition.
[C, L] = wavedec(signal, waveorder, wavekind);
[~, energies] = wenergy(C, L);
Note, that the wavelet deomposition in a specific decomposition level does not exactly represent an actual frequency band. This can be only done, using trigonometric functions for decomposition - however, in hat case you end up with the discrete Fourier transform.
However, you can calculate corresponding frequencies (i.e. pseudo frequencies) for a specific wavelet family and level of decomposition (look at centfrq() on that matter). If you carefully choose the wavelet family and wavelet order, you get a wavelet decomposition, that roughly corresponds to the desired bands.
For your use case, one would choose Daubechies order 3 Wavelets and six levels of decomposition. Then the decomposition levels 1 to 5 in reverse order should just about match the required bands:
L1: gamma, L2: beta, L3: alpha, L4: theta and L5: delta.
  1 Comment
Afiqah Abu Samah
Afiqah Abu Samah on 15 Mar 2017
Hi, I want to ask how to calculate the energy of 2-D wavelet decomposition. I know that function wenergy2 can be use, but I want to know how it can be calculated since I want to use single level 'dwt2' function and decompose the images level-by-level instead of using this; [C,S] = wavedec2(X,2,'bior3.7'). (I have my own reason why I need to decompose it like that)
If 'dwt2' is used, I can't calculate the energy using 'wenergy2' since I didn't know how to get the 'C' array.
Please help me, give me some ideas how to solve this.

Sign in to comment.

m on 18 Aug 2013
thanks jan for attention, i run your MATLAB command but i have a signal with 120hz and 23.6s and want to use db4 in 4 level , in your answer i cant understand who can i do it ?
(excuse me for my poor english!)

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!