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

    function out = minus(ta, tb)
%-  Minus.

% Copyright 2016 The MathWorks, Inc.

% Note we do not support "datetime() - '2016-01-27'" syntax since we don't have
% strong types for char/string/cellstr.
[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.getAdaptorForType;
import matlab.bigdata.internal.adaptors.GenericAdaptor;

% Superiority goes: datetime > calendarDuration > duration
% Empty types are presumed numeric.
if strcmp(ca, 'datetime')
    if strcmp(cb, 'datetime')
        outAdaptor = getAdaptorForType('duration');
    else
        outAdaptor = getAdaptorForType('datetime');
    end
else
    if strcmp(cb, 'datetime')
        error(message('MATLAB:bigdata:array:SubstractDatetimeFrom'));
    end

    if any(strcmp({ca,cb}, 'calendarDuration'))
        outAdaptor = getAdaptorForType('calendarDuration');
    elseif any(strcmp({ca,cb}, 'duration'))
        outAdaptor = getAdaptorForType('duration');
    else
        outAdaptor = GenericAdaptor();
    end
end
out = elementfun(@minus, ta, tb);
out.Adaptor = outAdaptor;
% Now try to propagate sizes
out = computeElementwiseSize(out, {ta, tb});

end