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

波变换

开发平台:

Matlab

  1. function labels = tlabels(t,data,varargin)
  2. %TLABELS Labels for the nodes of a wavelet packet tree.
  3. %   LABELS = TLABELS(T,D,TYPE,N) returns the labels for
  4. %   the nodes N of the tree T.
  5. %   D is the data structure associated with T.
  6. %   The valid values for TYPE are:
  7. %       'i'  --> indices.
  8. %       'p'  --> depth-position.
  9. %       'e'  --> entropy.
  10. %       'eo' --> optimal entropy.
  11. %       's'  --> size.
  12. %       'n'  --> none.
  13. %       't'  --> type.
  14. %   
  15. %   LABELS = TLABELS(T,D,TYPE) returns the labels
  16. %   for all nodes of T.
  17. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 15-Oct-96.
  18. %   Last Revision: 17-Jul-1999.
  19. %   Copyright 1995-2002 The MathWorks, Inc.
  20. %   $Revision: 1.5 $  $Date: 2002/04/14 19:27:42 $
  21. labtype = varargin{1};
  22. if length(varargin)<2
  23.     nodes = allnodes(t);
  24. else
  25.     nodes = varargin{2};
  26. end
  27. nbnodes = length(nodes);
  28. labels  = [];
  29. switch labtype
  30.    case 'p'
  31.      order = treeord(t);
  32.      [d,p] = ind2depo(order,nodes);
  33.      for k=1:nbnodes
  34.          labels = strvcat(labels,sprintf('(%0.f,%0.f)',d(k),p(k)));
  35.      end
  36.    case 'i'
  37.      for k=1:nbnodes
  38.          labels = strvcat(labels,sprintf('(%0.f)',nodes(k)));
  39.      end
  40.    case 'e'
  41.      entropies = wdatamgr('read_ent',data,nodes);
  42.      labels = num2str(entropies(:),5);
  43.    case 'eo'
  44.      ent_opt = wdatamgr('read_ento',data,nodes);
  45.      labels  = num2str(ent_opt(:),5);
  46.    case 's'
  47.      order = treeord(t);
  48.      labels = SizesLab(data,order,nodes,nbnodes);
  49.    case 'n'
  50.    case 't'
  51.      order = treeord(t);
  52.      [d,p] = ind2depo(order,nodes);
  53.      p = rem(p,order);
  54.      pstr = repLine('a',nbnodes);
  55.      if order==2
  56.          I = find(p==1); pd = repLine('d',length(I)); pstr(I,:) = pd;
  57.      else
  58.          I = find(p==1); pd = repLine('h',length(I)); pstr(I,:) = pd;
  59.          I = find(p==2); pd = repLine('v',length(I)); pstr(I,:) = pd;
  60.          I = find(p==3); pd = repLine('d',length(I)); pstr(I,:) = pd;
  61.      end
  62.      lp = repLine('(',nbnodes);
  63.      rp = repLine(')',nbnodes);
  64.      labels = [lp pstr rp];
  65. end
  66. %=============================================================================%
  67. % INTERNAL FUNCTIONS
  68. %=============================================================================%
  69. %-----------------------------------------------------------------------------%
  70. function m = repLine(c,n)
  71. %REPLINE Replicate Lines.
  72. m = c(ones(n,1),:);
  73. %-----------------------------------------------------------------------------%
  74. function labels = SizesLab(data,order,nodes,nbnodes)
  75. %SIZESLAB Built Length or SizesLabels.
  76. %
  77. labels  = [];
  78. sizes   = wdatamgr('rsizes',data);
  79. [d,p]   = ind2depo(order,nodes);
  80. d   = d+1;
  81. switch order
  82.     case 2
  83.         for k=1:nbnodes
  84.             labels = strvcat(labels,sprintf('%0.f',sizes(d(k))));
  85.         end
  86.     case 4
  87.         for k=1:nbnodes
  88.             labels = strvcat(labels, sprintf('(%0.f,%0.f)',sizes(:,d(k))));
  89.         end
  90. end
  91. %-----------------------------------------------------------------------------%
  92. %=============================================================================%