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

波变换

开发平台:

Matlab

  1. function Ds = entrupd(Ts,Ds,ent,in4)
  2. %ENTRUPD Entropy update (wavelet packet).
  3. %   ND = ENTRUPD(T,D,ENT) or 
  4. %   ND = ENTRUPD(T,D,ENT,PAR) returns for a
  5. %   given wavelet packet decomposition structure
  6. %   [T,D] (see MAKETREE), the updated data structure
  7. %   ND corresponding to entropy function ENT with
  8. %   optional parameter PAR (see WENTROPY).
  9. %
  10. %   [T,ND] is the resulting decomposition structure.
  11. %
  12. %   See also WENTROPY, WPDEC, WPDEC2.
  13. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  14. %   Last Revision: 02-Aug-2000.
  15. %   Copyright 1995-2002 The MathWorks, Inc.
  16. % $Revision: 1.12 $
  17. % Check arguments.
  18. if errargn(mfilename,nargin,[3 4],nargout,[0 1]), error('*'), end
  19. if nargin==3 , par = 0; else par = in4; end
  20. if strcmp(lower(ent),'user') & ~ischar(par)
  21.     error('*** Invalid function name for user entropy ***');
  22. end
  23. % Keep tree nodes.
  24. nods      = (allnodes(Ts))';
  25. ent_nods  = zeros(size(nods));
  26. ento_nods = NaN;
  27. ento_nods = ento_nods(ones(size(nods)));
  28. % Update entropy.
  29. for i = 1:length(nods)
  30.     % read or reconstruct packet coefficients.
  31.     if wtreemgr('istnode',Ts,nods(i))
  32.         coefs = wdatamgr('read_cfs',Ds,Ts,nods(i));
  33.     else
  34.         coefs = wpcoef(Ts,Ds,nods(i));
  35.     end
  36.     % compute entropy.
  37.     ent_nods(i) = wentropy(coefs,ent,par);
  38. end
  39. % Update data structure.
  40. Ds = wdatamgr('write_tp_ent',Ds,ent,par);
  41. Ds = wdatamgr('write_ent',Ds,ent_nods,nods);
  42. Ds = wdatamgr('write_ento',Ds,ento_nods,nods);