function theResult = which1s(theFunction) % which1s -- "which" for entire Matlab path. % which1s('theFunction') performs "which" for % all parts of the Matlab path, returning a % list of instances of 'theFunction', the % first of which is the current one. The % routine ignores class-methods. % which1s (no argument) demonstrates itself % by operating on itself. % Copyright (C) 2000 Dr. Charles R. Denham, ZYDECO. % All Rights Reserved. % Disclosure without explicit written consent from the % copyright owner does not constitute publication. % Version of 29-Mar-2000 09:31:12. % Updated 29-Mar-2000 10:08:39. if nargin < 1& nargout < 1 help(mfilename) feval(mfilename, mfilename) return end current = which(theFunction); if isempty(current) % Not found. w = {[theFunction ' not found.']}; else % Find others. p = path; if p(1) ~= pathsep, p = [pathsep p]; end if p(end) ~= pathsep, p(end+1) = pathsep; end f = find(p == pathsep); w = cell(length(f-1), 1); w{1} = current; theOldPWD = pwd; for i = 2:length(f) w{i} = ''; theDir = p(f(i-1)+1:f(i)-1); if ~isempty(theDir) cd(theDir) w{i} = which(theFunction); end end cd(theOldPWD) end % Delete duplicates. [w, indices] = sort(w); for i = length(w):-1:2 if isequal(w{i}, w{i-1}) w{i} = ''; end end w(indices) = w; for i = length(w):-1:2 if isempty(w{i}) w(i) = []; end end if nargout > 0 theResult = w; else for i = 1:length(w) disp(w{i}) end end