upwlev2.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:2k
源码类别:

波变换

开发平台:

Matlab

  1. function [Nc,Ns,a] = upwlev2(c,s,IN3,IN4)
  2. %UPWLEV2 Single-level reconstruction of 2-D wavelet decomposition.
  3. %   [NC,NS,CA] = UPWLEV2(C,S,'wname') performs the single-level
  4. %   reconstruction of wavelet decomposition structure 
  5. %   [C,S] giving the new one [NC,NS], and extracts the last
  6. %   approximation coefficients matrix CA.
  7. %
  8. %   [C,S] is a decomposition at level n = size(S,1)-2, so
  9. %   [NC,NS] is the same decomposition at level n-1 and CA 
  10. %   is the approximation matrix at level n.
  11. %
  12. %   'wname' is a string containing the wavelet name,
  13. %   C is the original wavelet decomposition vector and
  14. %   S the corresponding bookkeeping matrix (for 
  15. %   detailed storage information, see WAVEDEC2).
  16. %
  17. %   Instead of giving the wavelet name, you can give the
  18. %   filters.
  19. %   For [NC,NS,CA] = UPWLEV2(C,S,Lo_R,Hi_R),
  20. %   Lo_R is the reconstruction low-pass filter and
  21. %   Hi_R is the reconstruction high-pass filter.
  22. %
  23. %   See also IDWT2, UPCOEF2, WAVEDEC2.
  24. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  25. %   Last Revision: 17-Mar-2003.
  26. %   Copyright 1995-2004 The MathWorks, Inc.
  27. % $Revision: 1.10.4.2 $
  28. % Check arguments.
  29. if nargin == 3
  30.     [Lo_R,Hi_R] = wfilters(IN3,'r');
  31. else
  32.     Lo_R = IN3; Hi_R = IN4;
  33. end
  34. % Extract last approximation.
  35. nr   = s(1,1);
  36. nc   = s(1,2);
  37. last = nr*nc;
  38. a    = reshape(c(1:last),nr,nc);
  39. % One step reconstruction of the wavelet decomposition structure.
  40. ns = size(s,1);
  41. if ns>2
  42.     s2 = s(2,:);
  43.     s3 = s(3,:);
  44.     Ns = [s3 ;s(3:ns,:)];
  45.     nr = s2(1,1); nc = s2(1,2); nb = nr*nc;
  46.     first = last+1; last = last+nb;
  47.     h     = reshape(c(first:last),nr,nc);
  48.     first = last+1; last = last+nb;
  49.     v     = reshape(c(first:last),nr,nc);
  50.     first = last+1; last = last+nb;
  51.     d     = reshape(c(first:last),nr,nc);
  52.     ra = idwt2(a,h,v,d,Lo_R,Hi_R,s3);
  53.     Nc = [ra(:)' c(last+1:end)];
  54. else
  55.     Ns = [];
  56.     Nc = [];
  57. end