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

波变换

开发平台:

Matlab

  1. function [Ea,Eh,Ev,Ed] = wenergy2(C,S)
  2. %WENERGY2 Energy for 2-D wavelet decomposition.
  3. %   For a two dimensional wavelet decomposition [C,S], 
  4. %   (see WAVEDEC2) [Ea,Eh,Ev,Ed] = WENERGY2(C,S) returns
  5. %   Ea, which is the percentage of energy corresponding to
  6. %   the approximation, and vectors Eh, Ev, Ed, which contain 
  7. %   respectively the  percentages of energy corresponding to 
  8. %   the horizontal, vertical and diagonal details.
  9. %
  10. %   [Ea,EDetail] = WENERGY2(C,S) returns Ea, and EDetail, 
  11. %   which is the sum of vectors Eh, Ev and Ed.  
  12. %
  13. %   Example:
  14. %     load detail
  15. %     [C,S] = wavedec2(X,2,'sym4');
  16. %     [Ea,Eh,Ev,Ed] = wenergy2(C,S)
  17. %     [Ea,EDetails] = wenergy2(C,S)
  18. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  19. %   Last Revision: 14-May-2003.
  20. %   Copyright 1995-2004 The MathWorks, Inc.
  21. %   $Revision: 1.2.4.2 $
  22. Et = sum(C.^2);
  23. level = size(S,1)-2;
  24. Ca = C(1:prod(S(1,:)));
  25. Ea = 100*sum(Ca.^2)/Et;
  26. Eh = zeros(1,level); Ev = Eh; Ed = Eh;
  27. for k=1:level 
  28.     [Ch,Cv,Cd] = detcoef2('all',C,S,k);
  29.     Eh(k) = 100*sum(Ch(:).^2)/Et;
  30.     Ev(k) = 100*sum(Cv(:).^2)/Et; 
  31.     Ed(k) = 100*sum(Cd(:).^2)/Et; 
  32. end
  33. if nargout==2
  34.     Eh = Eh + Ev + Ed;
  35. end