gusucode.com > symbolic工具箱matlab源码程序 > symbolic/@sym/colon.m

    function c = colon(a,d,b)
%COLON  Symbolic colon operator.
%   COLON(A,B) overloads symbolic A:B.
%   COLON(A,D,B) overloads symbolic A:D:B.
%
%   Example:
%       0:sym(1/3):1 is [  0, 1/3, 2/3,  1]

%   Copyright 1993-2014 The MathWorks, Inc.

narginchk(2,3);

if nargin == 2
  b = d;
  d = 1;
end

args = privResolveArgs(a,b,d);
a = formula(sym(args{1}));
b = formula(sym(args{2}));
d = formula(sym(args{3}));
if numel(a) > 1
  a = privsubsref(a,1);
end
if numel(d) > 1
  d = privsubsref(d,1);
end
if isempty(a) || isempty(b) || isempty(d) || d == 0
  c = sym(zeros(1,0));
else
  if numel(b) > 1
    b = privsubsref(b,1);
  end
  try
    n = double((b-a)/d);
  catch me
    if strcmp(me.identifier,'symbolic:double:cantconvert')
      error(message('symbolic:colon:unknownStep', char(a), char(b), char(d)));
    else
      rethrow(me);
    end
  end
  c = a + (0:n)*d;
end

if strcmp(mupadmex(['stdlib::hasfloat([' a.s ',' b.s ',' d.s '])'], 0), 'TRUE')
  c = vpa(c);
end

c = privResolveOutput(c, args{1});