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

波变换

开发平台:

Matlab

  1. function [tn,K] = leaves(t,flagdps)
  2. %LEAVES Determine terminal nodes.
  3. %   N = LEAVES(T) returns a column vector N, which 
  4. %   contains the indices of terminal nodes of the tree T.
  5. %
  6. %   The nodes are ordered from left to right as in tree T.   
  7. %
  8. %   [N,K] = LEAVES(T,'s') or [N,K] = LEAVES(T,'sort')
  9. %   returns sorted indices.
  10. %   M = N(K) are the indices reordered as in tree T,
  11. %   from left to right.
  12. %
  13. %   N = LEAVES(T,'dp') returns a matrix N, which contains
  14. %   the depths and positions of terminal nodes.
  15. %   N(i,1) is the depth of i-th terminal node.
  16. %   N(i,2) is the position of i-th terminal node.
  17. %
  18. %   [N,K] = LEAVES(T,'sdp') or [N,K] = LEAVES(T,'pds') or
  19. %   [N,K] = LEAVES(T,'sortdp') or [N,K] = LEAVES(T,'pdsort') 
  20. %   return sorted nodes.
  21. %
  22. %   See also TNODES, NOLEAVES.
  23. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 21-May-2003.
  24. %   Last Revision: 23-May-2003.
  25. %   Copyright 1995-2004 The MathWorks, Inc.
  26. %   $Revision: 1.1.6.2 $  $Date: 2004/03/15 22:38:22 $
  27. tn = t.tn;
  28. if nargout>1 , 
  29.     K = [1:length(tn)]';
  30. end
  31. if nargin>1
  32.     order = t.order;
  33.     switch flagdps
  34.         case {'s','sort'}
  35.             [tn,K] = sort(tn);
  36.             if nargout>1 , [nul,K] = sort(K); end
  37.             
  38.         case {'sdp','dps','sortdp','dpsort'}
  39.             [tn,K] = sort(tn);
  40.             if nargout>1 , [nul,K] = sort(K); end
  41.             [tn(:,1),tn(:,2)] = ind2depo(order,tn);
  42.             
  43.         case {'dp'}
  44.             [tn(:,1),tn(:,2)] = ind2depo(order,tn);
  45.     end
  46. end