wavelte packet reconstruction

7 views (last 30 days)
thangam
thangam on 22 Oct 2011
hi,
actually i decomposed the signal with wpdec() and measured each node using wpcoef now i have to adjust those signals before reconstruction.
anybody pls help me in which manner the signal can be adjusted before reconstruction to get the better signal.
thank u in advance

Accepted Answer

Wayne King
Wayne King on 29 Oct 2011
Yes, you can use wpthcoef(), that does what you want.
Unless you have a very specific way you want to modify them beside hard or soft thresholding. If that is the case:
Read the terminal node coefficients with
cfs = read(T,'data');
Keep the approximation coefficients
tnodes = leaves(T);
app_coefs = read(T,'data',tnodes(1));
Change cfs the way you want. Let coefs be the changed coefficients.
Put the new coefficients in a tree.
Tnew = write(T,'data',coefs);
Place the approximation coefficients back.
Tnew = write(T,'data', tnodes(1),app_coefs);

More Answers (7)

Wayne King
Wayne King on 22 Oct 2011
Hi, You can use wpthcoef or wpdencmp for denoising. Or you can simply modify the terminal nodes of your original tree, then create a new tree and use write to write your new coefficients to the terminal nodes.

thangam
thangam on 23 Oct 2011
thanks for ur kind reply sir. ya actually i tried wpdencoef and wpthcoef and i got some output.
but i need to adjust each node signal separately and i adjusted some of the nodes and modified new coefficients by write command. but i did not get clear output. in some of the nodes while adjusting it shows invalid node value. so pls give me an for the procedure to adjust the each node signal sir.

Wayne King
Wayne King on 23 Oct 2011
Hi, It doesn't make sense in a wavelet packet tree to adjust each node separately because the higher levels nodes depend on the terminal nodes. It's not like a wavelet tree where you can modify just the detail coefficients.
You should decompose the signal down to whatever level you wish and just modify the terminal nodes. By definition, everything above it will be modified.

thangam
thangam on 23 Oct 2011
thanks for ur help sir.
so i used 3 level([c,l] = wavedec(x,3,'db1');) means then
Is i have to change all the nodes of 7, 8, 9, 10, 11, 12, 13, 14 sir.
Actually i changed those nodes by giving some values, and the signal was got modified but i did not get clear output. so in which manner i have to adjust the nodes either by defining threshold values by any command or any other process sir.
thank u in advance sir
  2 Comments
Wayne King
Wayne King on 23 Oct 2011
wavedec() does not give you a wavelet packet transform. That gives you a wavelet transform, so which did you do?
thangam
thangam on 27 Oct 2011
just for example i gave that one sir.
actually i am doing with wpt = wpdec(y,3,'db3'); sir

Sign in to comment.


thangam
thangam on 27 Oct 2011
just for example i gave that one sir.
actually i am doing with wpt = wpdec(y,3,'db3'); sir

Wayne King
Wayne King on 27 Oct 2011
Then just modify the terminal nodes.
  1 Comment
thangam
thangam on 29 Oct 2011
ya i got idea. thanks for your kind help sir.

Sign in to comment.


thangam
thangam on 27 Oct 2011
is there any procedure to modify those nodes sir

Community Treasure Hunt

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

Start Hunting!