Question about wavelet and reconstruction

3 views (last 30 days)
tanglaoya
tanglaoya on 20 Sep 2016
Commented: tanglaoya on 6 Oct 2016
Dear all, I am studying wavelet and focusing on the signal reconstruction. I noticed that the function 'upcoef' just work for the reconstruction: http://cn.mathworks.com/help/wavelet/ref/upcoef.html
At the end of this page, I also noticed that upcoef is equivalent to an N time repeated use of the inverse wavelet transform.
Then I tried to test it with the following code:
t=0:2*pi/999:2*pi;
b0=sin(t);
figure,plot(b0);
[cA,cD]=dwt(b0,'db4',3);
D = upcoef('d',cD,'db4',3,length(b0));
figure,plot(D);
[cA,cD]=dwt(b0,'db4');
[cA,cD]=dwt(cA,'db4');
[cA,cD]=dwt(cA,'db4');
D=idwt([],cD,'db4');
D=idwt([],D,'db4');
D=idwt([],D,'db4',length(b0));
figure,plot(D)
However, results by two methods are different. Could anyone tell me what's wrong in the code?
Thanks, Tang Laoya
  3 Comments
tanglaoya
tanglaoya on 20 Sep 2016
I changed code to the following:
t=0:2*pi/999:2*pi;
b0=sin(t);
figure,plot(b0);
[C,L]=wavedec(b0,3,'db4');
CA3=C(1:L(1));
CD3=C(L(1)+1:L(1)+L(2));
CD2=C(L(1)+L(2)+1:L(1)+L(2)+L(3));
CD1=C(L(1)+L(2)+L(3)+1:L(1)+L(2)+L(3)+L(4));
CD0 = upcoef('d',CD3,'db4',3,length(b0));
figure,plot(CD0);
%
[cA1,cD1]=dwt(b0,'db4');
[cA2,cD2]=dwt(cA1,'db4');
[cA3,cD3]=dwt(cA2,'db4');
D=idwt([],cD3,'db4');
D=idwt([],D,'db4');
cD0=idwt([],D,'db4',length(b0));
figure,plot(cD0)
errcA3=max(abs(CA3-cA3));
errCD3=max(abs(CD3-cD3));
errCD2=max(abs(CD2-cD2));
errCD1=max(abs(CD1-cD1));
errD=max(abs(CD0-cD0));
but results are still different.
tanglaoya
tanglaoya on 20 Sep 2016
Not only the roundoff error. I guess there is something wrong in the code. Thanks

Sign in to comment.

Answers (1)

Wayne King
Wayne King on 4 Oct 2016
One problem you are having is that DWT does not take the 3 input you are using. DWT only does a single-level wavelet transform unlike wavedec. The 3 input to DWT above is NOT being used. It has no effect on the output.
  1 Comment
tanglaoya
tanglaoya on 6 Oct 2016
Hi Wayne, Thanks for your kindly reply. I did use wavedec in my latter comment, but the results are the same.

Sign in to comment.

Categories

Find more on Discrete Multiresolution Analysis in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!