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

波变换

开发平台:

Matlab

  1. function t = entrupd(t,ent,in3)
  2. %ENTRUPD Entropy update (wavelet packet tree).
  3. %   T = ENTRUPD(T,ENT) or  T = ENTRUPD(T,ENT,PAR) 
  4. %   updates the entropy of wavelet packet tree T 
  5. %   using the entropy function ENT with optional
  6. %   parameter PAR (see WENTROPY for more information).
  7. %
  8. %   See also WENTROPY, WPDEC, WPDEC2.
  9. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  10. %   Last Revision: 14-May-2003.
  11. %   Copyright 1995-2004 The MathWorks, Inc.
  12. %   $Revision: 1.6.4.2 $  $Date: 2004/03/15 22:39:08 $
  13. if nargin==2 , par = 0; else par = in3; end
  14. if strcmp(lower(ent),'user')
  15.     if ~ischar(par)
  16.         error('*** Invalid function name for user entropy ***');
  17.     end
  18. end
  19. % Keep tree nodes.
  20. nods      = read(t,'an');
  21. ent_nods  = zeros(size(nods));
  22. ento_nods = NaN;
  23. ento_nods = ento_nods(ones(size(nods)));
  24. % Update entropy.
  25. for i = 1:length(nods)
  26.     % read or reconstruct packet coefficients.
  27.     if istnode(t,nods(i))
  28.         coefs = read(t,'data',nods(i));
  29.     else
  30.         coefs = wpcoef(t,nods(i));
  31.     end
  32.     % compute entropy.
  33.     ent_nods(i) = wentropy(coefs,ent,par);
  34. end
  35. % Update data structure.
  36. t = write(t, ...
  37.           'entname',ent,        ...
  38.           'entpar',par,         ...
  39.           'ent',ent_nods,nods,  ...
  40.           'ento',ento_nods,nods ...
  41.           );