function [token, remainder, quotient] = strtok(string, delimiters)
%Modified version of STRTOK to also return the quotient
%  string = [quotient token remainder]
%STRTOK Find token in string.
%   STRTOK(S) returns the first token in the string S delimited
%   by "white space".   Any leading white space characters are ignored.
%
%   STRTOK(S,D) returns the first token delimited by one of the 
%   characters in D.  Any leading delimiter characters are ignored.
%
%   [T,R] = STRTOK(...) also returns the remainder of the original
%   string.
%   If the token is not found in S then R is an empty string and T
%   is same as S. 
%
%   Copyright 1984-2002 The MathWorks, Inc. 
%   Nov. 27, 2018  $Date: 2002/04/09 00:33:38 $

token = []; remainder = []; quotient = string;

len = length(string);
if len == 0
    return
end

if (nargin == 1)
    delimiters = [9:13 32]; % White space characters
end

i = 1;
while (any(string(i) == delimiters))
    i = i + 1;
    if (i > len), return, end
end
start = i;
while (~any(string(i) == delimiters))
    i = i + 1;
    if (i > len), break, end
end
sfinish = i - 1;

token = string(start:sfinish);

if (nargout >= 2)
    remainder = string(sfinish + 1:length(string));
end

if (nargout == 3 & start > 1)
	quotient = string(1:start-1);
else
	quotient = [];
end
