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

波变换

开发平台:

Matlab

  1. function [d,p] = ind2depo(order,node)
  2. %IND2DEPO Node index to node depth-position.
  3. %   For a tree of order ORD, [D,P] = IND2DEPO(ORD,N)
  4. %   computes the depths D and the positions P (at 
  5. %   these depths D) for the nodes with indices N.
  6. %   The nodes are numbered from left to right and
  7. %   from top to bottom. The root index is 0.
  8. %
  9. %   N (indices) is a column vector of integers (N => 0).
  10. %   The outputs D (depths) and P (positions) are column
  11. %   vectors such that:  0 <= D and 0 <= P <= ORD^D-1.
  12. %
  13. %   Note: [D,P] = IND2DEPO(ORD,[D P]).
  14. %
  15. %   See also DEPO2IND.
  16. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  17. %   Last Revision: 25-May-2003.
  18. %   Copyright 1995-2004 The MathWorks, Inc.
  19. % $Revision: 1.11.4.2 $
  20. % At depth d, the index of the first (left)
  21. % node is ind = (order^d-1)/(order-1)
  22. % All indices at depth d are:
  23. %   ip = (order^d-1)/(order-1) + p
  24. %   with 0 <= p <= (order^d-1)
  25. [r,c] = size(node);
  26. switch c
  27.     case {0,1}
  28.         d = zeros(r,1);
  29.         p = zeros(r,1);
  30.         K = node>0;
  31.         if any(K)
  32.             switch order
  33.                 case 1
  34.                   d(K) = node(K);
  35.                 otherwise
  36.                   d(K) = floor(log((order-1)*node(K)+1)/log(order));
  37.                   p(K) = node(K)-(order.^d(K)-1)/(order-1);
  38.             end
  39.         end
  40.         d(node<0) = -1;
  41.     case 2
  42.         d = node(:,1);
  43.         p = node(:,2);
  44.     otherwise
  45.         error('Invalid argument value.');
  46. end