function keep5(varargin)
%KEEP retains variables specified in input but clears all others.
% KEEP V1 V2 ... keeps V1,V2,... and clears other variables;
% KEEP('V1','V2',...) is the function form of the syntax.
% KEEP supports exactly same input argument as CLEAR; for example,
% wildcard *, 'global', '-regexp' all works.
%
% See also CLEAR.
% Written by Siyi Deng; 06-04-2007;
% sdeng@uci.edu
if nargin == 0, evalin('caller','clear;'); return; end
if strcmpi(varargin{1},'global')
varargin{1} = '''global'',';
else
varargin = [{''},varargin];
end
varargin{end+1} = evalin('caller',['who(',varargin{1}(1:end-1),');']);
for k = 1:numel(varargin{end})
eval([varargin{end}{k},'=0;']);
end
clear(varargin{2:end-1});
varargin{end} = who;
varargin{end} = setdiff(varargin{end},{'varargin'});
for k = 1:numel(varargin{end})
evalin('caller',['clear(',varargin{1},'''',varargin{end}{k},''');']);
end
end % Main function KEEP;