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

波变换

开发平台:

Matlab

  1. function [thr,nkeep] = wdcbm(c,l,alpha,m)
  2. %WDCBM Thresholds for wavelet 1-D using Birge-Massart strategy.
  3. %   [THR,NKEEP] = WDCBM(C,L,ALPHA,M) returns level-dependent 
  4. %   thresholds THR and numbers of coefficients to be kept NKEEP,
  5. %   for de-noising or compression. THR is obtained using a wavelet 
  6. %   coefficients selection rule based on Birge-Massart strategy.
  7. %
  8. %   [C,L] is the wavelet decomposition structure of the signal
  9. %   to be de-noised or compressed, at level j = length(L)-2.
  10. %   ALPHA and M must be real numbers greater than 1.  
  11. %
  12. %   THR is a vector of length j, THR(i) contains the 
  13. %   threshold for level i.
  14. %   NKEEP is a vector of length j, NKEEP(i) 
  15. %   contains the number of coefficients to be kept at level i.
  16. %
  17. %   j, M and ALPHA define the strategy:
  18. %   - at level j+1 (and coarser levels), everything is kept.
  19. %   - for level i from 1 to j, the n_i largest coefficients
  20. %   are kept with n_i = M/(j+2-i)^ALPHA. 
  21. %
  22. %   Typically ALPHA = 1.5 for compression and ALPHA = 3 for de-noising.
  23. %   A default value for M is M = L(1) the number of the coarsest 
  24. %   approximation coefficients, since the previous formula leads
  25. %   for i = j+1, to n_(j+1) = M = L(1). 
  26. %   Recommended values for M are from L(1) to 2*L(1).
  27. %
  28. %   WDCBM(C,L,ALPHA) is equivalent to WDCBM(C,L,ALPHA,L(1)). 
  29. %   
  30. %   See also WDEN, WDENCMP, WPDENCMP.
  31. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  32. %   Last Revision: 14-May-2003.
  33. %   Copyright 1995-2004 The MathWorks, Inc.
  34. % $Revision: 1.10.4.2 $
  35. % Check arguments.
  36. nbIn = nargin;
  37. if nbIn < 3
  38.   error('Not enough input arguments.');
  39. end
  40. if errargt(mfilename,alpha-1,'rep'), error('*'), end
  41. if nbIn==4     
  42.     if errargt(mfilename,m-1,'rep'), error('*'), end
  43. else            
  44.     m = l(1);      
  45. end
  46. m = max(m,1);
  47. J = length(l)-2;   % low frequency cutoff. 
  48. thr = zeros(1,J);  
  49. nkeep = zeros(1,J);
  50. % Wavelet coefficients selection.
  51. for j=1:J
  52.     % number of coefs to be kept.
  53.     n = m/(J+2-j)^alpha;   
  54.     n = min(round(n),l(J-j+2));
  55.     % threshold.
  56.     if n == l(J-j+2)
  57.         thr(j) = 0;
  58.     else
  59.         d = detcoef(c,l,j);
  60.         d = sort(abs(d));
  61.         thr(j) = d(end-n);
  62.     end
  63.     nkeep(j) = n;
  64. end