gusucode.com > bigdata 工具箱 matlab源码程序 > bigdata/@tall/categorical.m
function tc = categorical(tdata,varargin) %CATEGORICAL Create a tall categorical array. % Supported syntaxes: % C = CATEGORICAL(DATA) % C = CATEGORICAL(DATA,VALUESET) % C = CATEGORICAL(DATA,VALUESET,CATEGORYNAMES) % C = CATEGORICAL(DATA, ..., 'Ordinal',ORD) % C = CATEGORICAL(DATA, ..., 'Protected',PROTECT) % % LIMITATION: % The order of the categories when executing C = CATEGORICAL(DATA) is % undefined. Use VALUESET and CATEGORYNAMES to enforce the order. % % See also CATEGORICAL. % Copyright 2016 The MathWorks, Inc. narginchk(1,7); if nargin == 1 || isUsingOrdinalOrProtected(varargin{1}) % The order of the categories created by a tall array is undefined. tc = elementfun(@categorical, tdata); tc.Adaptor = matlab.bigdata.internal.adaptors.CategoricalAdaptor(); ec = chunkfun(@(x)x([]), tc); ec.Adaptor = matlab.bigdata.internal.adaptors.CategoricalAdaptor(); tcategories = clientfun(@categories, ec); % Ensure same categories. tc = elementfun(@setcats, tc, matlab.bigdata.internal.broadcast(tcategories)); tc.Adaptor = matlab.bigdata.internal.adaptors.CategoricalAdaptor(); if nargin > 1 tc = mycategorical(tc, varargin{:}); end else tc = mycategorical(tdata, varargin{:}); end end function tf = isUsingOrdinalOrProtected(x) tf = ischar(x) && (strcmpi('Ordinal', x) || strcmpi('Protected', x)); end function tc = mycategorical(tdata,varargin) vars = cellfun(@matlab.bigdata.internal.broadcast, varargin, 'UniformOutput', false); tc = elementfun(@categorical, tdata, vars{:}); tc.Adaptor = matlab.bigdata.internal.adaptors.CategoricalAdaptor(); end