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

波变换

开发平台:

Matlab

  1. function [wpt,ento,n2m] = bestlevt(wpt)
  2. %BESTLEVT Best level wavelet packet tree.
  3. %   BESTLEVT computes the optimal complete sub-tree of an
  4. %   initial tree with respect to an entropy type criterion.
  5. %   The resulting complete tree may be of smaller depth
  6. %   than the initial one.
  7. %
  8. %   T = BESTLEVT(T) computes the modified tree T
  9. %   corresponding to the best level tree decomposition.
  10. %
  11. %   [T,E] = BESTLEVT(T) returns best tree T
  12. %   and in addition, the best entropy value E.
  13. %   The optimal entropy of the node whose index is j-1
  14. %   is E(j).
  15. %
  16. %   See also BESTTREE, WENTROPY, WPDEC, WPDEC2.
  17. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  18. %   Last Revision: 23-May-2003.
  19. %   Copyright 1995-2004 The MathWorks, Inc.
  20. %   $Revision: 1.5.4.2 $  $Date: 2004/03/15 22:39:04 $
  21. order = treeord(wpt);
  22. tn = leaves(wpt);
  23. [dtn,ptn]  = ind2depo(order,tn);
  24. dmin       = min(dtn);
  25. nottn      = noleaves(wpt,'dp');
  26. K          = nottn(:,1) == dmin;
  27. if ~isempty(K)
  28.     n2m = depo2ind(order,nottn(K,:));
  29. else
  30.     n2m = [];
  31. end
  32. ento = Inf;
  33. for d=dmin:-1:0
  34.     nodes = depo2ind(order,[d 0])+[0:order^d-1]';
  35.     ent   = sum(read(wpt,'ent',nodes));
  36.     if ent<=ento
  37.        ento = ent;
  38.        if d<dmin , n2m = nodes; end
  39.     end;
  40. end
  41. wpt = nodejoin(wpt,n2m);
  42. ento = read(wpt,'ent');
  43. wpt  = write(wpt,'ento',ento);