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

波变换

开发平台:

Matlab

  1. function [thr,sorh,keepapp,crit] = ddencmp(dorc,worwp,x)
  2. %DDENCMP Default values for de-noising or compression.
  3. %   [THR,SORH,KEEPAPP,CRIT] = DDENCMP(IN1,IN2,X)
  4. %   returns default values for de-noising or compression,
  5. %   using wavelets or wavelet packets, of an input vector
  6. %   or matrix X which can be a 1-D or 2-D signal.
  7. %   THR is the threshold, SORH is for soft or hard
  8. %   thresholding, KEEPAPP allows you to keep approximation
  9. %   coefficients, and CRIT (used only for wavelet packets)
  10. %   is the entropy name (see WENTROPY).
  11. %   IN1 is 'den' or'cmp' and IN2 is 'wv' or 'wp'.
  12. %
  13. %   For wavelets (three output arguments):
  14. %   [THR,SORH,KEEPAPP] = DDENCMP(IN1,'wv',X) 
  15. %   returns default values for de-noising (if IN1 = 'den')
  16. %   or compression (if IN1 = 'cmp') of X.
  17. %   These values can be used for WDENCMP.
  18. %
  19. %   For wavelet packets (four output arguments):
  20. %   [THR,SORH,KEEPAPP,CRIT] = DDENCMP(IN1,'wp',X) 
  21. %   returns default values for de-noising (if IN1 = 'den')
  22. %   or compression (if IN1 = 'cmp') of X.
  23. %   These values can be used for WPDENCMP.
  24. %
  25. %   See also WDENCMP, WENTROPY, WPDENCMP.
  26. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  27. %   Last Revision: 14-May-2003.
  28. %   Copyright 1995-2004 The MathWorks, Inc.
  29. % $Revision: 1.10.4.2 $
  30. % Check arguments.
  31. nbIn = nargin;
  32. if nbIn<3
  33.     error('Not enough input arguments.');
  34. elseif isequal(worwp,'wv')
  35.     if (nargout>3)
  36.         error('Too many output arguments.');
  37.     end
  38. elseif isequal(worwp,'wp')
  39.     if (nargout>4)
  40.         error('Too many output arguments.');
  41.     end
  42. else
  43.     error('Invalid argument value');
  44. end
  45. % Set problem dimension.
  46. if min(size(x))~=1, dim = 2; else , dim = 1; end
  47. % Set keepapp default value.
  48. keepapp = 1;
  49. % Set sorh default value.
  50. if isequal(dorc,'den') & isequal(worwp,'wv') , sorh = 's'; else ,sorh = 'h'; end
  51. % Set threshold default value.
  52. n = prod(size(x));
  53. % nominal threshold.
  54. switch dorc
  55.   case 'den'
  56.     switch worwp
  57.       case 'wv' , thr = sqrt(2*log(n));               % wavelets.
  58.       case 'wp' , thr = sqrt(2*log(n*log(n)/log(2))); % wavelet packets.
  59.     end
  60.   case 'cmp' ,  thr = 1;
  61. end
  62. % rescaled threshold.
  63. if dim == 1
  64.     [c,l] = wavedec(x,1,'db1');
  65.     c = c(l(1)+1:end);
  66. else
  67.     [c,l] = wavedec2(x,1,'db1');
  68.     c = c(prod(l(1,:))+1:end);
  69. end
  70. normaliz = median(abs(c));
  71. % if normaliz=0 in compression, kill the lowest coefs.
  72. if dorc == 'cmp' & normaliz == 0 
  73.     normaliz = 0.05*max(abs(c)); 
  74. end
  75. if dorc == 'den'
  76.     if worwp == 'wv'
  77.         thr = thr*normaliz/0.6745;
  78.     else
  79.         crit = 'sure';
  80.     end
  81. else
  82.     thr = thr*normaliz;
  83.     if worwp == 'wp', crit = 'threshold'; end
  84. end