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

波变换

开发平台:

Matlab

  1. function [perfl2,perf0] = wscrupd(c,l,n,thr,sorh)
  2. %WSCRUPD Update Compression Scores using Wavelets thresholding.
  3. %   For 1D case :
  4. %   [PERFL2,PERF0] = WSCRUPD(C,L,N,THR,SORH) returns
  5. %   compression scores induced by wavelet coefficients
  6. %   thresholding of the decomposition structure [C,L]
  7. %   (performed at level N) using level-dependent thresholds
  8. %   contained in vector THR (THR must be of length N).
  9. %   SORH ('s' or 'h') is for soft or hard thresholding
  10. %   (see WTHRESH for more details).
  11. %   Output arguments PERFL2 and PERF0 are L^2 recovery
  12. %   and compression scores in percentages.
  13. %
  14. %   For 2D case :
  15. %   [PERFL2,PERF0] = WSCRUPD(C,L,N,THR,SORH)
  16. %   THR must be a matrix 3 by N containing the level
  17. %   dependent thresholds in the three orientations
  18. %   horizontal, diagonal and vertical.
  19. %
  20. %   See also WDENCMP, WCMPSCR.
  21. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  22. %   Last Revision: 14-May-2003.
  23. %   Copyright 1995-2004 The MathWorks, Inc.
  24. % $Revision: 1.11.4.2 $
  25. % Check arguments and set problem dimension.
  26. if errargt(mfilename,n,'int'), error('*'), end
  27. if errargt(mfilename,thr,'re0'), error('*'), end
  28. if errargt(mfilename,sorh,'str'), error('*'), end
  29. dim = 1; if min(size(l))~=1, dim = 2; end
  30. % Wavelet coefficients thresholding.
  31. if dim == 1
  32.     cxc = wthcoef('t',c,l,1:n,thr,sorh);
  33. else
  34.     cxc = wthcoef2('h',c,l,1:n,thr(1,:),sorh);
  35.     cxc = wthcoef2('d',cxc,l,1:n,thr(2,:),sorh);
  36.     cxc = wthcoef2('v',cxc,l,1:n,thr(3,:),sorh);
  37. end
  38. % Compute L^2 recovery and compression scores.
  39. sumc2 = sum(c.^2);
  40. if sumc2<eps
  41.     perfl2 = 100;
  42. else
  43.     perfl2 = 100*(sum(cxc.^2)/sumc2);
  44. end
  45. perf0 = 100*(length(find(cxc==0))/length(cxc));