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

波变换

开发平台:

Matlab

  1. function hval = wgethist(signal,nbbar,mode)
  2. %WGETHIST Build values to plot histogram.
  3. %   P = WGETHIST(X,N) returns a 2xN matrix
  4. %   X is a vector or a matrix.
  5. %   N is the number of bins.
  6. %   P(1,:) = x coordinates of points of histogram.
  7. %   P(2,:) = y coordinates of points of histogram.
  8. %
  9. %   P = WGETHIST(X) is equivalent to P = WGETHIST(X,10)
  10. %
  11. %   P = WGETHIST(X,N,MODE) (with MODE = 'center' or 'left')
  12. %   If X is constant, the main class of the histogram is
  13. %   centered or not (depending of MODE).
  14. %
  15. %   See also WIMGHIST.
  16. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-May-96.
  17. %   Last Revision: 01-May-1998.
  18. %   Copyright 1995-2002 The MathWorks, Inc.
  19. % $Revision: 1.11 $
  20. sig_len = length(signal);
  21. if sig_len==0, hval = []; return; end
  22. if nargin==1
  23.     nbbar = 10;
  24. else
  25.     nbbar = fix(nbbar);
  26.     if nbbar<2 , nbbar = 10; end
  27. end
  28. if nargin<3 | ~isequal(lower(mode),'left')
  29.     mode = 'center';
  30. end
  31. [n,x] = wimghist(signal,nbbar);
  32. if abs(max(x)-min(x))<1000*eps
  33.     switch mode
  34.         case 'left'
  35.           n    = [sum(n) zeros(1,nbbar-1)];
  36.           step = 1;
  37.           xx   = linspace(0,step,nbbar);
  38.           x    = xx+x(1);
  39.         case 'center'
  40.           nn   = (nbbar-1)/2;
  41.           n    = [zeros(1,floor(nn)) sum(n) zeros(1,ceil(nn))];
  42.           step = 0.5;
  43.           xx   = linspace(-step,step,nbbar);
  44.           x    = xx-xx(floor(nn)+1)+x(1);
  45.     end
  46. end
  47. d       = diff(x)/2;
  48. d       = [d d(1)];
  49. xs      = [x-d;x-d;x+d;x+d];
  50. ns      = zeros(size(xs));
  51. ns(2:3,:) = [n;n];
  52. xs      = xs(:)';
  53. ns      = ns(:)';
  54. hval    = [xs;ns];