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

波变换

开发平台:

Matlab

  1. function Ts = nodejoin(Ts,node)
  2. %NODEJOIN Recompose node.
  3. %   T = NODEJOIN(T,N) returns the modified tree structure T
  4. %   corresponding to a recomposition of the node N.
  5. %
  6. %   The nodes are numbered from left to right and
  7. %   from top to bottom. The root index is 0.
  8. %
  9. %   T = NODEJOIN(T) is equivalent to T = NODEJOIN(T,0).
  10. %
  11. %   See also MAKETREE, NODESPLT, WTREEMGR.
  12. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  13. %   Last Revision: 05-May-1999.
  14. %   Copyright 1995-2002 The MathWorks, Inc.
  15. % $Revision: 1.11 $
  16. % Check arguments.
  17. if errargn(mfilename,nargin,[1 2],nargout,[0 1]), error('*'); end
  18. if nargin == 1, node = 0; end
  19. if wtreemgr('istnode',Ts,node) , return; end
  20. order     = wtreemgr('order',Ts);
  21. depth     = wtreemgr('depth',Ts);
  22. node      = depo2ind(order,node);
  23. tab       = wtreemgr('table',Ts,0);
  24. [row,col] = find(tab==node);
  25. icol      = find(col>2);
  26. rec       = tab(row(icol),2:max(col(icol)));
  27. rec       = rec(:);
  28. rec       = rec(rec>node);
  29. if length(rec>1);
  30.     rec = sort(rec);
  31.     K   = [1;find(diff(rec)~=0)+1];
  32.     rec = rec(K);
  33. end
  34. rec    = wrev([node;rec])';
  35. lrec   = length(rec);
  36. ord    = [1:order];
  37. i_fils = order*(rec(ones(1,order),:))'+ ord(ones(1,lrec),:);
  38. for k = 1:lrec
  39.     for j = 1:order
  40.         [r,c] = find(tab==i_fils(k,j));
  41.         i_fils(k,j) = min(r);           % indices
  42.     end
  43. end
  44. nbinfo = size(Ts,1)-1;
  45. for k = 1:lrec
  46.     insert_st = [rec(k) NaN*ones(1,order-1) ; zeros(nbinfo,order)];
  47.     Ts(:,i_fils(k,:)) = insert_st;
  48. end
  49. Ts = Ts(:,~isnan(Ts(1,:)));