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

波变换

开发平台:

Matlab

  1. function labels = tlabels(t,varargin)
  2. %TLABELS Labels for the nodes of a wavelet packet tree.
  3. %   LABELS = TLABELS(T,TYPE,N) returns the labels for
  4. %   the nodes N of the tree T.
  5. %   The valid values for TYPE are:
  6. %       'i'  or 1 --> indices.
  7. %       'p'  or 2 --> depth-position.
  8. %       'e'  or 3 --> entropy.
  9. %       'eo' or 4 --> optimal entropy.
  10. %       's'  or 5 --> size.
  11. %       'n'  or 6 --> none.
  12. %       't'  or 7 --> type.
  13. %   
  14. %   LABELS = TLABELS(T,TYPE) returns the labels
  15. %   for all nodes of T.
  16. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 15-Oct-96.
  17. %   Last Revision: 21-May-2003.
  18. %   Copyright 1995-2004 The MathWorks, Inc.
  19. %   $Revision: 1.5.4.2 $  $Date: 2004/03/15 22:39:15 $
  20. labtype = varargin{1};
  21. if length(varargin)<2
  22.     nodes = allnodes(t);
  23. else
  24.     nodes = varargin{2};
  25. end
  26. nbnodes = length(nodes);
  27. labels  = [];
  28. switch labtype
  29.    case {3,'e'}
  30.      entropies = read(t,'ent',nodes);
  31.      labels = num2str(entropies(:),5);
  32.    case {4,'eo'}
  33.      ent_opt = read(t,'ento',nodes);
  34.      labels  = num2str(ent_opt(:),5);
  35.    case {5,'s'}
  36.      order = treeord(t);
  37.      sizes = read(t,'sizes',nodes);
  38.      switch order
  39.        case 2
  40.          for k=1:nbnodes
  41.            labels = strvcat(labels,sprintf('%0.f',max(sizes(k,:))));
  42.          end
  43.        case 4
  44.          for k=1:nbnodes
  45.            labels = strvcat(labels,sprintf('(%0.f,%0.f)',sizes(k,:)));
  46.          end
  47.      end
  48.    case {7,'t'}
  49.      order = treeord(t);
  50.      [d,p] = ind2depo(order,nodes);
  51.      p = rem(p,order);
  52.      pstr = repLine('a',nbnodes);
  53.      if order==2
  54.          I = find(p==1); pd = repLine('d',length(I)); pstr(I,:) = pd;
  55.      else
  56.          I = find(p==1); pd = repLine('h',length(I)); pstr(I,:) = pd;
  57.          I = find(p==2); pd = repLine('v',length(I)); pstr(I,:) = pd;
  58.          I = find(p==3); pd = repLine('d',length(I)); pstr(I,:) = pd;
  59.      end
  60.      lp = repLine('(',nbnodes);
  61.      rp = repLine(')',nbnodes);
  62.      labels = [lp pstr rp];
  63.    case {8,'en'}
  64.      [tn,K] = leaves(t,'s');
  65.      E = wenergy(t);
  66.      E = E(K);
  67.      for k=1:nbnodes
  68.          n   = nodedesc(t,nodes(k));
  69.          idx = istnode(t,n);
  70.          idx(idx==0) = [];
  71.          lab = sprintf('%2.2f',sum(E(idx)));
  72.          labels = strvcat(labels,lab); 
  73.      end
  74.    otherwise
  75.      labels = tlabels(t.dtree,varargin{:});  
  76. end
  77. %--------------------------%
  78. function m = repLine(c,n)
  79. %REPLINE Replicate Lines.
  80. m = c(ones(n,1),:);
  81. %--------------------------%