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

波变换

开发平台:

Matlab

  1. function [r,idx] = oknode(t,n,type)
  2. %OKNODE True for existing node.
  3. %   R = OKNODE(T,N) returns 1's for nodes N which
  4. %   exist in the tree T, and 0's for others.
  5. %
  6. %   R = OKNODE(...,TYPE) returns 1's for nodes N of
  7. %   type: TYPE which exist in the tree T, and 0's
  8. %   for others. Valid values for TYPE are:
  9. %       'tn'  - for a terminal node.
  10. %       'ntn' - for a non terminal node.
  11. %       'all' - for a node.
  12. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 20-May-2003.
  13. %   Last Revision: 23-May-2003.
  14. %   Copyright 1995-2004 The MathWorks, Inc.
  15. %   $Revision: 1.1.6.2 $  $Date: 2004/03/15 22:38:31 $
  16. idx = []; 
  17. if n==0 
  18.     r = true; return;
  19. elseif (n<0) | isempty(n)
  20.     r = false; return;
  21. end
  22. r = false;
  23. order = t.order;
  24. depth = t.depth;
  25. tn    = t.tn;
  26. switch type
  27.     case 'ntn' ,
  28.         tn = floor((tn-1)/order);
  29.         depthBEG = depth - 1;
  30.         depthEND = 0;
  31.     case 'tn',
  32.         depthBEG = depth;
  33.         depthEND = depthBEG;
  34.     otherwise
  35.         depthBEG = depth;
  36.         depthEND = 0;
  37. end
  38. for d = depthBEG:-1:depthEND
  39.     idx = find(n==tn);
  40.     if ~isempty(idx)
  41.         r = true; break
  42.     else
  43.         tn = floor((tn-1)/order);
  44.     end
  45. end