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

波变换

开发平台:

Matlab

  1. function [Ts,Ds,n2m] = wpcutree(Ts,Ds,level)
  2. %WPCUTREE Cut wavelet packet tree.
  3. %   [T,D] = WPCUTREE(T,D,L) cuts the tree T at level L
  4. %   and computes the corresponding data structure D
  5. %   (see MAKETREE).
  6. %
  7. %   [T,D,RN] = WPCUTREE(T,D,L) returns the same arguments
  8. %   as above and in addition, the vector RN contains
  9. %   the indices of the reconstructed nodes.
  10. %
  11. %   See also MAKETREE, WPDEC, WPDEC2.
  12. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  13. %   Last Revision: 04-May-1999.
  14. %   Copyright 1995-2002 The MathWorks, Inc.
  15. % $Revision: 1.13 $
  16. % Check arguments.
  17. if errargn(mfilename,nargin,[2 3],nargout,[2 3]), error('*'); end
  18. if nargin==2 , level = 0; end
  19. depth = wtreemgr('depth',Ts);
  20. if level<0
  21.     errargt(mfilename,'invalid level value','msg'); error('*');
  22.     return;
  23. elseif (level>depth) | (depth==0)
  24.     n2m = [];
  25.     return;
  26. end
  27. order = wtreemgr('order',Ts);
  28. dp    = wtreemgr('allnodes',Ts,1);
  29. p_an  = dp(dp(:,1)==level,2);
  30. dp    = wtreemgr('tnodes',Ts,1);
  31. p_tn  = dp(dp(:,1)==level,2);
  32. ind   = wcommon(p_an,p_tn);
  33. p_an  = p_an(ind==0);
  34. d_an  = level*ones(size(p_an));
  35. n2m   = depo2ind(order,[d_an p_an]);
  36. for n = n2m(:)'
  37.     [Ts,Ds] = wpjoin(Ts,Ds,n);
  38. end