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

波变换

开发平台:

Matlab

  1. function fig = drawtree(t,varargin)
  2. %DRAWTREE Draw wavelet packet decomposition tree.
  3. %   DRAWTREE(T) draws the wavelet packet tree T.
  4. %   F = DRAWTREE(T) returns the figure's handle.
  5. %
  6. %   For an existing figure F produced by a previous call
  7. %   to the DRAWTREE function, DRAWTREE(T,F) draws the wavelet 
  8. %   packet tree T in the figure whose handle is F.
  9. %
  10. %   Example:
  11. %     x   = sin(8*pi*[0:0.005:1]);
  12. %     t   = wpdec(x,3,'db2');
  13. %     fig = drawtree(t);
  14. %     %---------------------------------------
  15. %     % Use command line function to modify t
  16. %     %---------------------------------------
  17. %     t   = wpjoin(t,2);
  18. %     drawtree(t,fig);
  19. %
  20. %   See also READTREE.
  21. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-Oct-97.
  22. %   Last Revision: 21-May-2003.
  23. %   Copyright 1995-2004 The MathWorks, Inc.
  24. %   $Revision: 1.11.4.2 $
  25. %--------------%
  26. % OLD VERSION  %
  27. %--------------%
  28. %   DRAWTREE(T,D) draws the wavelet packet tree T.
  29. %   D is the data structure associated with T.
  30. %   F = DRAWTREE(T,D) returns the figure's handle.
  31. %
  32. %   For an existing figure F produced by a previous call
  33. %   to the DRAWTREE function, DRAWTREE(T,F) draws the wavelet 
  34. %   packet tree T in the figure whose handle is F.
  35. %
  36. %   Example:
  37. %     x = sin(8*pi*[0:0.005:1]);
  38. %     [t,d] = wpdec(x,3,'db2');
  39. %     fig   = drawtree(t,d);
  40. %     %--------------------------------------------
  41. %     % Use command line function to modify t or d
  42. %     %--------------------------------------------
  43. %     [t,d] = wpjoin(t,d,2);
  44. %     drawtree(t,d,fig);
  45. %
  46. %   See also READTREE.
  47. % Check arguments.
  48. %-----------------
  49. nbIn = nargin;
  50. switch nbIn
  51.   case {0}  , error('Not enough input arguments.');
  52.       
  53.   case {1,2,3} 
  54.       if isa(t,'wptree')
  55.           maxarg = 2;
  56.       else
  57.           maxarg = 3;
  58.       end
  59.       if (nbIn>maxarg) , error('Too many input arguments.'); end
  60.       
  61.   otherwise , error('Too many input arguments.');
  62. end
  63. % Draw tree.
  64. %-----------
  65. order = treeord(t);
  66. switch order
  67.     case 2 , prefix = 'wp1d';
  68.     case 4 , prefix = 'wp2d';
  69. end
  70. func1 = [prefix 'tool'];
  71. func2 = [prefix 'mngr'];
  72. newfig = 1;
  73. if nargin==maxarg
  74.     fig = varargin{end};
  75.     varargin(end) = [];
  76.     wins = wfindobj('figure');
  77.     if ~isempty(find(wins==fig))
  78.         tagfig = lower(get(fig,'tag'));
  79.         if isequal(func1,tagfig) , newfig = 0; end
  80.     end
  81. end
  82. if newfig , fig = feval(func1); end
  83. feval(func2,'load_dec',fig,t,varargin{:});