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

波变换

开发平台:

Matlab

  1. function [c,l] = wavedec(x,n,IN3,IN4)
  2. %WAVEDEC Multi-level 1-D wavelet decomposition.
  3. %   WAVEDEC performs a multilevel 1-D wavelet analysis
  4. %   using either a specific wavelet 'wname' or a specific set 
  5. %   of wavelet decomposition filters (see WFILTERS).
  6. %
  7. %   [C,L] = WAVEDEC(X,N,'wname') returns the wavelet
  8. %   decomposition of the signal X at level N, using 'wname'.
  9. %
  10. %   N must be a strictly positive integer (see WMAXLEV).
  11. %   The output decomposition structure contains the wavelet
  12. %   decomposition vector C and the bookkeeping vector L.
  13. %
  14. %   For [C,L] = WAVEDEC(X,N,Lo_D,Hi_D),
  15. %   Lo_D is the decomposition low-pass filter and
  16. %   Hi_D is the decomposition high-pass filter.
  17. %
  18. %   The structure is organized as:
  19. %   C      = [app. coef.(N)|det. coef.(N)|... |det. coef.(1)]
  20. %   L(1)   = length of app. coef.(N)
  21. %   L(i)   = length of det. coef.(N-i+2) for i = 2,...,N+1
  22. %   L(N+2) = length(X).
  23. %
  24. %   See also DWT, WAVEINFO, WAVEREC, WFILTERS, WMAXLEV.
  25. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  26. %   Last Revision: 14-May-2003.
  27. %   Copyright 1995-2004 The MathWorks, Inc.
  28. %   $Revision: 1.15.4.2 $ $Date: 2004/03/15 22:42:16 $
  29. % Check arguments.
  30. if nargin==3
  31.     [Lo_D,Hi_D] = wfilters(IN3,'d');
  32. else
  33.     Lo_D = IN3;   Hi_D = IN4;
  34. end
  35. % Initialization.
  36. s = size(x); x = x(:)'; % row vector
  37. c = [];      l = [length(x)];
  38. for k = 1:n
  39.     [x,d] = dwt(x,Lo_D,Hi_D); % decomposition
  40.     c     = [d c];            % store detail
  41.     l     = [length(d) l];    % store length
  42. end
  43. % Last approximation.
  44. c = [x c];
  45. l = [length(x) l];
  46. if s(1)>1, c = c'; l = l'; end