gusucode.com > bigdata 工具箱 matlab源码程序 > bigdata/@tall/datevec.m

    function varargout = datevec(varargin)
%DATEVEC convert tall array to date components.
%   Supported syntaxes for tall DATETIME:
%   DV = DATEVEC(T)
%   [Y,MO,D,H,MI,S] = DATEVEC(T)
%
%   Supported syntaxes for tall array:  
%   V = DATEVEC(N)
%   V = DATEVEC(S,F)
%   V = DATEVEC(S,F,P)
%   V = DATEVEC(S,P,F)
%   [Y,MO,D,H,MI,S] = DATEVEC(...)
%   V = DATEVEC(S)
%   V = DATEVEC(S,P)
%
%   See also DATETIME/DATEVEC, DATEVEC.

%   Copyright 2015-2016 The MathWorks, Inc.

narginchk(1,3);
nargoutchk(0,6);
% We must allow: datetime/calendarDuration/duration/cellstr as the primary data
% arguments, char for flags, and numeric for PivotYear argument.
[varargin{1:nargin}] = tall.validateType(varargin{:}, mfilename, {...
    'datetime', 'calendarDuration', 'duration', ...
    'cellstr', 'char', 'numeric'}, 1:nargin);

% datevec implicitly colonizes its inputs, so we must insist that all input
% arguments are data columns, or character row-vectors.
args = cellfun(@iValidateDatevecArg, varargin, 'UniformOutput', false);

[varargout{1:max(nargout,1)}] = slicefun(@datevec, args{:});
for idx = 1:numel(varargout)
    varargout{idx}.Adaptor = ...
        matlab.bigdata.internal.adaptors.getAdaptorForType('double');
end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% iValidDatevecArg checks whether a given argument is 
function arg = iValidateDatevecArg(arg)

messageId = 'MATLAB:bigdata:array:DatevecInputsColumn';

% Valid arguments are either column vectors (including scalars for PivotYear) or
% character row vectors. The validateType checks above have already eliminated
% completely invalid types. We also allow non-column empties through for no
% really particularly good reason.
predicate = @(x) (ischar(x) && isrow(x)) || iscolumn(x) || isempty(x);

if istall(arg)
    arg = lazyValidate(arg, {predicate, messageId});
elseif ~predicate(arg)
    error(message(messageId));
end
end