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

波变换

开发平台:

Matlab

  1. function varargout = read(t,varargin)
  2. %READ Read values in WPTREE object fields.
  3. %   VARARGOUT = READ(T,VARARGIN) is the most general syntax to read
  4. %   one or more property values from the fields of a WPTREE object.
  5. %
  6. %   The different ways to call the READ function are:
  7. %     PropValue = READ(T,'PropName') or
  8. %     PropValue = READ(T,'PropName','PropParam')
  9. %     Or any combination of previous syntaxes:
  10. %     [PropValue1,PropValue2, ...] = ...
  11. %         READ(T,'PropName1','PropParam1','PropName2','PropParam2',...)
  12. %         PropParam is optional.
  13. %
  14. %   The valid choices for PropName are:
  15. %     'ent', 'ento', 'sizes' (see WPTREE):
  16. %        Without PropParam, PropValue contains the entropy (or optimal
  17. %        entropy or size) of the tree nodes in ascending node
  18. %        index order, or with PropParam = Vector of node indices.
  19. %
  20. %     'cfs': With PropParam = One terminal node index.
  21. %        cfs = READ(T,'cfs',NODE) is equivalent to
  22. %        cfs = READ(T,'data',NODE) and returns the coefficients
  23. %        of the terminal node NODE.
  24. %
  25. %     'entName', 'entPar', 'wavName' (see WPTREE), 'allcfs':
  26. %        Without PropParam.
  27. %        cfs = READ(T,'allcfs') is equivalent to cfs = READ(T,'data').
  28. %        PropValue contains the desired information in ascending node
  29. %        index order of the tree nodes.
  30. %     
  31. %     'wfilters' (see WFILTERS):
  32. %        without PropParam or with PropParam = 'd', 'r', 'l', 'h'.
  33. %
  34. %     'data' :
  35. %        without PropParam or
  36. %        with PropParam = One terminal node index or
  37. %             PropParam = Column vector of terminal node indices.
  38. %        In the last case, the PropValue is a cell array.
  39. %        Without PropParam, PropValue contains the coefficients of
  40. %        the tree nodes in ascending node index order.
  41. %
  42. %   Examples:
  43. %     x = rand(1,512);
  44. %     t = wpdec(x,3,'db3');
  45. %     t = wpjoin(t,[4;5]);
  46. %     plot(t);
  47. %     sAll = read(t,'sizes');
  48. %     sNod = read(t,'sizes',[0,4,5]);  
  49. %     eAll = read(t,'ent');
  50. %     eNod = read(t,'ent',[0,4,5]); 
  51. %     dAll = read(t,'data');
  52. %     dNod = read(t,'data',[4;5]);
  53. %     [lo_D,hi_D,lo_R,hi_R] = read(t,'wfilters');
  54. %     [lo_D,lo_R,hi_D,hi_R] = read(t,'wfilters','l','wfilters','h');
  55. %     [ent,ento,cfs4,cfs5]  = read(t,'ent','ento','cfs',4,'cfs',5);
  56. %
  57. %   See also DISP, GET, SET, WPTREE, WRITE.
  58. % INTERNAL OPTIONS:
  59. %------------------
  60. % 'tnsizes':
  61. %    Without PropParam or with PropParam = Vector of terminal node ranks.
  62. %    The terminal nodes are ordered from left to right.
  63. %    Examples:
  64. %      stnAll = read(t,'tnsizes');
  65. %      stnNod = read(t,'tnsizes',[1,2]);
  66. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-Jan-97.
  67. %   Last Revision: 22-May-2003.
  68. %   Copyright 1995-2004 The MathWorks, Inc.
  69. %   $Revision: 1.6.4.2 $  $Date: 2004/03/15 22:39:11 $
  70. nbin = length(varargin);
  71. k    = 1;
  72. kout = 1;
  73. while k<=nbin
  74.   argNAME = lower(varargin{k});
  75.   switch argNAME
  76.       case {'ent','ento'}
  77.           if isequal(argNAME,'ent') , col = 4; else , col = 5; end
  78.           if k<nbin
  79.               arg = varargin{k+1};
  80.               if ischar(arg) && ~strcmp(arg,'all')
  81.                   arg = 'all';
  82.               else
  83.                   k = k+1;
  84.               end
  85.           else
  86.               arg = 'all';
  87.           end
  88.           varargout{kout} = fmdtree('an_read',t,arg,col);
  89.           kout = kout+1;
  90.       case 'cfs'
  91.           if k<nbin
  92.               arg = varargin{k+1}; k = k+1;
  93.           else
  94.               error('Invalid node index ... ');
  95.           end
  96.           varargout{kout} = read(t,'data',arg);
  97.           kout = kout+1;
  98.       case 'allcfs'  , varargout{kout} = read(t,'data');    kout = kout+1;
  99.       case 'entname' , varargout{kout} = t.entInfo.entName; kout = kout+1;                       
  100.       case 'entpar'  , varargout{kout} = t.entInfo.entPar;  kout = kout+1;
  101.       case 'wavname' , varargout{kout} = t.wavInfo.wavName; kout = kout+1;
  102.       case 'wfilters'
  103.           if k<nbin, arg = varargin{k+1}; else , arg = 'last'; end
  104.           switch arg
  105.             case 'd'
  106.               varargout{kout} = t.wavInfo.Lo_D; kout = kout+1;
  107.               varargout{kout} = t.wavInfo.Hi_D; kout = kout+1;
  108.               k = k+1;
  109.             case 'r'
  110.               varargout{kout} = t.wavInfo.Lo_R; kout = kout+1;
  111.               varargout{kout} = t.wavInfo.Hi_R; kout = kout+1;
  112.               k = k+1;
  113.             case 'l'
  114.               varargout{kout} = t.wavInfo.Lo_D; kout = kout+1;
  115.               varargout{kout} = t.wavInfo.Lo_R; kout = kout+1;
  116.               k = k+1;
  117.             case 'h'
  118.               varargout{kout} = t.wavInfo.Hi_D; kout = kout+1;
  119.               varargout{kout} = t.wavInfo.Hi_R; kout = kout+1;
  120.               k = k+1;
  121.             otherwise
  122.               varargout{kout} = t.wavInfo.Lo_D; kout = kout+1;
  123.               varargout{kout} = t.wavInfo.Hi_D; kout = kout+1;
  124.               varargout{kout} = t.wavInfo.Lo_R; kout = kout+1;
  125.               varargout{kout} = t.wavInfo.Hi_R; kout = kout+1;
  126.               if isequal(arg,'all') | isequal(arg,'a'), k = k+1; end
  127.             end
  128.       case {'an','sizes','data','tnsizes'}
  129.           field = varargin{k};
  130.           if k<nbin && ...
  131.              (isnumeric(varargin{k+1}) || isequal(varargin{k+1},'all'))
  132.               arg = varargin{k+1}; k = k+1;
  133.           else
  134.               arg = 'all';
  135.           end
  136.           varargout{kout} = read(t.dtree,field,arg); kout = kout+1;
  137.       otherwise
  138.           error('Unknown object field.');
  139.   end
  140.   k = k+1;
  141. end