MATLAB Answers

Question about wavelet and reconstruction

조회 수: 1(최근 30일)
tanglaoya
tanglaoya 20 Sep 2016
Commented: tanglaoya 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

Walter Roberson
Walter Roberson 20 Sep 2016
How different are the results? Could the difference be just numeric roundoff? http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
tanglaoya
tanglaoya 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 20 Sep 2016
Not only the roundoff error. I guess there is something wrong in the code. Thanks

로그인 to comment.

답변 수 (1)

Wayne King
Wayne King 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

tanglaoya
tanglaoya 6 Oct 2016
Hi Wayne, Thanks for your kindly reply. I did use wavedec in my latter comment, but the results are the same.

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.


Translated by