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

波变换

开发平台:

Matlab

  1. function lev = wmaxlev(sizeX,wname);
  2. %WMAXLEV Maximum wavelet decomposition level.
  3. %   WMAXLEV can help you avoid unreasonable maximum level value.
  4. %
  5. %   L = WMAXLEV(S,'wname') returns the maximum level
  6. %   decomposition of signal or image of size S using the wavelet
  7. %   named in the string 'wname' (see WFILTERS for more information).
  8. %
  9. %   WMAXLEV gives the maximum allowed level decomposition,
  10. %   but in general, a smaller value is taken.
  11. %   Usual values are 5 for the 1-D case, and 3 for the 2-D case.
  12. %
  13. %   See also WAVEDEC, WAVEDEC2, WPDEC, WPDEC2.
  14. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  15. %   Last Revision: 14-May-2003.
  16. %   Copyright 1995-2004 The MathWorks, Inc.
  17. % $Revision: 1.11.4.2 $
  18. if     isempty(sizeX)
  19.        lev = [];
  20.        return;
  21. elseif length(sizeX)==1
  22.        lx = sizeX;
  23. elseif min(sizeX)==1
  24.        lx = max(sizeX);
  25. else
  26.        lx = min(sizeX);
  27. end
  28. wname = deblankl(wname);
  29. [wtype,bounds] = wavemngr('fields',wname,'type','bounds');
  30. switch wtype
  31.   case {1,2}
  32.     Lo_D = wfilters(wname);
  33.     lw = length(Lo_D);
  34.   case {3,4,5} , lw = bounds(2)-bounds(1)+1;
  35.   otherwise
  36.     errargt(mfilename,'invalid argument','msg');
  37.     error('*');
  38. end
  39. % the rule is the last level for which at least one coefficient 
  40. % is correct : (lw-1)*(2^lev) < lx
  41. lev = fix(log(lx/(lw-1))/log(2));
  42. if lev<1 , lev = 0; end