read.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:4k
- function varargout = read(t,varargin)
- %READ Read values in DTREE object fields.
- % VARARGOUT = READ(T,VARARGIN) is the most general syntax to read
- % one or more property values from the fields of a DTREE object.
- %
- % The different ways to call the READ function are:
- % PropValue = READ(T,'PropName') or
- % PropValue = READ(T,'PropName','PropParam')
- % Or combinations of previous syntax:
- % [PropValue1,PropValue2, ...] = ...
- % READ(T,'PropName1','PropParam1','PropName2','PropParam2',...)
- % PropParam is optional.
- %
- % The valid choices for PropName are:
- % 'sizes': with PropParam = Vector of node indices.
- %
- % 'data' :
- % without PropParam or
- % with PropParam = One terminal node indices or
- % PropParam = Column vector of terminal node indices.
- % In the last case, the PropValue is a cell array.
- %
- % Examples:
- % x = [0:0.1:1];
- % t = dtree(2,3,x);
- % t = nodejoin(t,[4;5]);
- % sAll = read(t,'sizes');
- % sNod = read(t,'sizes',[0,4,5]);
- % dAll = read(t,'data');
- % dNod = read(t,'data',[4;5]);
- % stnAll = read(t,'tnsizes');
- % stnNod = read(t,'tnsizes',[4,5]);
- % INTERNAL OPTIONS:
- %------------------
- % 'tnsizes':
- % Without PropParam or with PropParam = Vector of terminal node ranks.
- % The terminal nodes are ordered from left to right.
- %
- % 'an':
- % With PropParam = Vector of nodes indices.
- % NODES = READ(T,'an') returns all nodes of T.
- % NODES = READ(T,'an',NODES) returns the valid nodes of T
- % contained in the vector NODES.
- %
- % See also DISP, GET, SET, WRITE.
- % M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-Jan-97.
- % Last Revision: 23-May-2003.
- % Copyright 1995-2004 The MathWorks, Inc.
- % $Revision: 1.6.4.2 $ $Date: 2004/03/15 22:37:34 $
- nbin = length(varargin);
- varargin{nbin+1} = 'all';
- k = 1;
- kout = 1;
- while k<=nbin
- argNAME = varargin{k};
- switch argNAME
- case {'an','sizes'}
- switch argNAME
- case 'an' , col = 1;
- case 'sizes' , col = 2:3;
- end
- if ischar(varargin{k+1}) % all nodes
- i_nodes = [1:size(t.allNI,1)]';
- if isequal(varargin{k+1},'all') , k = k+1; end
- else
- i_nodes = gidxsint(t.allNI(:,1),varargin{k+1});
- k = k+1;
- end
- varargout{kout} = t.allNI(i_nodes,col);
- kout = kout+1;
- case 'data'
- nextarg = varargin{k+1};
- if ischar(nextarg)
- if isequal(nextarg,'all') , k = k+1; end
- varargout{kout} = t.terNI{2};
- else
- n_rank = istnode(t,nextarg);
- if any(n_rank==0)
- error('Invalid node value.');
- end
- k = k+1;
- data = fmdtree('tn_read',t,'data',n_rank);
- if length(n_rank)==1
- varargout{kout} = data{1};
- else
- varargout{kout} = data;
- end
- kout = kout+1;
- end
- case 'tnsizes'
- % optional next argument:
- % nodes indices in tree structure or 'all'
- %-------------------------------------------
- nextarg = varargin{k+1};
- if ischar(nextarg) && ~strcmp(nextarg,'all')
- nextarg = 'all';
- else
- k = k+1;
- end
- varargout{kout} = fmdtree('tn_read',t,'sizes',nextarg);
- kout = kout+1;
- otherwise
- error('Unknown object field.');
- end
- k = k+1;
- end