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

波变换

开发平台:

Matlab

  1. function [c,s] = wavedec2(x,n,IN3,IN4)
  2. %WAVEDEC2 Multilevel 2-D wavelet decomposition.
  3. %   [C,S] = WAVEDEC2(X,N,'wname') returns the wavelet
  4. %   decomposition of the matrix X at level N, using the
  5. %   wavelet named in string 'wname' (see WFILTERS).
  6. %   Outputs are the decomposition vector C and the
  7. %   corresponding bookkeeping matrix S.
  8. %   N must be a strictly positive integer (see WMAXLEV).
  9. %
  10. %   Instead of giving the wavelet name, you can give the
  11. %   filters.
  12. %   For [C,S] = WAVEDEC2(X,N,Lo_D,Hi_D),
  13. %   Lo_D is the decomposition low-pass filter and
  14. %   Hi_D is the decomposition high-pass filter.
  15. %
  16. %   The output wavelet 2-D decomposition structure [C,S]
  17. %   contains the wavelet decomposition vector C and the 
  18. %   corresponding bookeeping matrix S. 
  19. %   Vector C is organized as:
  20. %     C = [ A(N)   | H(N)   | V(N)   | D(N) | ... 
  21. %   H(N-1) | V(N-1) | D(N-1) | ...  | H(1) | V(1) | D(1) ].
  22. %     where A, H, V, D, are row vectors such that: 
  23. %   A = approximation coefficients, 
  24. %   H = hori. detail coefficients,
  25. %   V = vert. detail coefficients,
  26. %   D = diag. detail coefficients,
  27. %   each vector is the vector column-wise storage of a matrix. 
  28. %   Matrix S is such that:
  29. %     S(1,:) = size of app. coef.(N)
  30. %     S(i,:) = size of det. coef.(N-i+2) for i = 2,...,N+1
  31. %     and S(N+2,:) = size(X).
  32. %
  33. %   See also DWT2, WAVEINFO, WAVEREC2, WFILTERS, WMAXLEV.
  34. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  35. %   Last Revision: 14-May-2003.
  36. %   Copyright 1995-2004 The MathWorks, Inc.
  37. % $Revision: 1.14.4.2 $
  38. % Check arguments.
  39. if nargin==3
  40.     [Lo_D,Hi_D] = wfilters(IN3,'d');
  41. else
  42.     Lo_D = IN3;   Hi_D = IN4;
  43. end
  44. % Initialization.
  45. s = [size(x)];
  46. c = [];
  47. for i=1:n
  48.     [x,h,v,d] = dwt2(x,Lo_D,Hi_D); % decomposition
  49.     c = [h(:)' v(:)' d(:)' c];     % store details
  50.     s = [size(x);s];               % store size
  51. end
  52. % Last approximation.
  53. c = [x(:)' c];
  54. s = [size(x);s];