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

波变换

开发平台:

Matlab

  1. function y = wcodemat(x,nb,opt,absol)
  2. %WCODEMAT Extended pseudocolor matrix scaling.
  3. %   Y = WCODEMAT(X,NBCODES,OPT,ABSOL) returns a coded version
  4. %   of input matrix X if ABSOL=0, or ABS(X) if ABSOL is 
  5. %   nonzero, using the first NBCODES integers.
  6. %   Coding can be done row-wise (OPT='row' or 'r'), columnwise 
  7. %   (OPT='col' or 'c'), or globally (OPT='mat' or 'm'). 
  8. %   Coding uses a regular grid between the minimum and 
  9. %   the maximum values of each row (column or matrix,
  10. %   respectively).
  11. %
  12. %   Y = WCODEMAT(X,NBCODES,OPT) is equivalent to
  13. %   Y = WCODEMAT(X,NBCODES,OPT,1).
  14. %   Y = WCODEMAT(X,NBCODES) is equivalent to
  15. %   Y = WCODEMAT(X,NBCODES,'mat',1).
  16. %   Y = WCODEMAT(X) is equivalent to
  17. %   Y = WCODEMAT(X,16,'mat',1).
  18. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-May-96.
  19. %   Last Revision: 26-May-2003.
  20. %   Copyright 1995-2004 The MathWorks, Inc.
  21. % $Revision: 1.11.4.2 $
  22. % Check arguments.
  23. switch nargin
  24.     case 1 , absol = 1; opt = 'm'; nb = 16;
  25.     case 2 , absol = 1; opt = 'm';
  26.     case 3 , absol = 1;
  27. end
  28. opt = lower(opt(1));
  29. trans = false;
  30. if isequal(opt(1),'r')
  31.     trans = true;
  32.     opt   = 'c';
  33.     x     = x';
  34. end
  35. if absol , x = abs(x); end
  36. switch opt
  37.     case 'm'
  38.         y = ones(size(x));
  39.         x = x - min(min(x));
  40.         maxx  = max(max(x));
  41.         if maxx<eps , return; end
  42.         x = nb*(x/maxx);
  43.         y(:) = 1 + fix(x);
  44.     case 'c'
  45.         [t1,t2] = size(x);
  46.         y = ones(t1,t2);
  47.         minx  = min(x); 
  48.         x = (x - minx(ones(1,t1),:));
  49.         maxx  = max(x);
  50.         echel = maxx(ones(1,t1),:);
  51.         indexs = echel<eps;
  52.         warning('off','MATLAB:divideByZero')
  53.         x = nb*(x./echel);
  54.         y = 1 + fix(x);
  55.         warning('on','MATLAB:divideByZero')
  56.         y(indexs) = 1;
  57.     otherwise , 
  58.         error(['Unknown Option.']);
  59. end
  60. y(y>nb) = nb;
  61. if trans, y = y'; end