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

波变换

开发平台:

Matlab

  1. function stdc = wnoisest(c,varargin)
  2. %WNOISEST Estimate noise of 1-D wavelet coefficients.
  3. %   STDC = WNOISEST(C,L,S) returns estimates of the detail
  4. %   coefficients' standard deviation for levels contained
  5. %   in the input vector S.
  6. %   [C,L] is the input wavelet decomposition structure
  7. %   (see WAVEDEC for more information).
  8. %
  9. %   If C is a one dimensional cell array, STDC = WNOISEST(C)
  10. %   returns a vector such that STDC(k) is an estimate of the
  11. %   standard deviation of c{k}.
  12. %
  13. %   If C is a numeric array, STDC = WNOISEST(C)
  14. %   returns a vector such that STDC(k) is an estimate of the
  15. %   standard deviation of c(k,:).
  16. %  
  17. %   The estimator used is Median Absolute Deviation / 0.6745,
  18. %   well suited for zero mean Gaussian white noise in the 
  19. %   de-noising 1-D model (see THSELECT for more information).
  20. %
  21. %   See also THSELECT, WAVEDEC, WDEN.
  22. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  23. %   Last Revision: 14-May-2003.
  24. %   Copyright 1995-2004 The MathWorks, Inc.
  25. % $Revision: 1.11.4.2 $
  26. % Check arguments.
  27. nbIn = nargin;
  28. if nbIn < 1
  29.   error('Not enough input arguments.');
  30. elseif nbIn > 3
  31.   error('Too many input arguments.');
  32. end
  33. if length(varargin)==0
  34.     if iscell(c)
  35.         nblev = length(c);
  36.     elseif isnumeric(c)
  37.         if size(c,1)>1
  38.             c = num2cell(c,2);
  39.         else
  40.             c = num2cell(c(:)',2);
  41.         end
  42.         nblev = size(c,1);
  43.     else
  44.         error(['Invalid argument value for: ' inputname(c)]);
  45.     end
  46. else
  47.     c = detcoef(c,varargin{:},'cells');
  48.     nblev = length(c);
  49. end
  50. stdc = zeros(1,nblev);
  51. for k = 1:nblev
  52.     stdc(k) = median(abs(c{k}))/0.6745;
  53. end