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

    function out = plus(ta, tb)
%+   Plus.

% Copyright 2016 The MathWorks, Inc.

[ta, tb] = tall.validateType(ta, tb, mfilename, ...
                             {'numeric', 'logical', 'duration', 'datetime', 'calendarDuration', 'char'}, ...
                             1:2);

ca = tall.getClass(ta);
cb = tall.getClass(tb);

import matlab.bigdata.internal.adaptors.DatetimeFamilyAdaptor;
import matlab.bigdata.internal.adaptors.GenericAdaptor;

% If either is datetime, then output is datetime (unless both are datetime)
% Else, if either is calendarDuration, output is calendarDuration
% Else, if either is duration, output is duration
% Else, output unknown
if any(strcmp({ca, cb}, 'datetime'))
    if all(strcmp({ca, cb}, 'datetime'))
        error(message('MATLAB:datetime:DatetimeAdditionNotDefined'));
    end
    outAdaptor = DatetimeFamilyAdaptor('datetime');
elseif any(strcmp({ca, cb}, 'calendarDuration'))
    outAdaptor = DatetimeFamilyAdaptor('calendarDuration');
elseif any(strcmp({ca, cb}, 'duration'))
    outAdaptor = DatetimeFamilyAdaptor('duration');
else
    outAdaptor = GenericAdaptor();
end
out = elementfun(@plus, ta, tb);
out.Adaptor = outAdaptor;
% Now try to propagate sizes
out = computeElementwiseSize(out, {ta, tb});
end