No BSD License  

Highlights from
ParseVarArgIn

from ParseVarArgIn by Michael Robbins
parses a parameter list. Given a set of property names, it assigns the appropriate values to variab

ParseVarargin(varargin,Prop,PClass)
function ParseVarargin(varargin,Prop,PClass)
% PARSEVARARGIN parses a parameter list.  Given a set of property names,
% PARSEVARARGIN assigns the appropriate values to variables.  The variables
% get the name of the property.  For instance, if you call a function, foo:
%
%    foo(in,'Color','green','Charm',5);
%
% and in foo, you call PARSEVARARGIN:
%
%    ParseVarargin({'Color','Charm','Strangeness'});
%
% PARSEVARARGIN will create a variable Color, with the value 'green', a
% variable Charm, with the value 5, and a variable Strangness, with the
% value NaN.
%
% PARSEVARARGIN will do type checking if you provide types and it will
% assign NaN to parameters that are not specified.
%
%  Example
%    clear all;
%    W = 10;
%    in = double(rand(10,W)>.5);
%    XLabel = cellstr(datestr(today-[W:-1:1],'mm/dd/yy'));
%    Title = 'Exercise Schedule Checkerboard';
%    Name = 'HeartRateAnalyser';
%    varargin = {in,'XLabel',XLabel,'Title',Title,'Name',Name};
%    Prop = {'XLabel','YLabel','Title','Name'};
%    PClass = {'cell','cell','char','char'};
%    clear W in Xlabel Title
%    who
%    ParseVarargin(varargin,Prop,PClass);
%    clear varargin Prop PClass
%    who
%    Name
%    Title
%    XLabel
%    YLabel 
%
%
% See also varargout nargin nargout inputname function lists paren
%          CatOrSplitFiles CheckerboardPlot varargin nargin
%          assignin evalin
%
% Key words varargout nargin nargout inputname function lists paren
%          CatOrSplitFiles CheckerboardPlot parameter workspace
%          assign input output arguments
%
%
%
% It's not fancy, but it works

% Michael Robbins
% michaelNOrobbinsSPAMusenet@yahoo.com
% robbins@bloomberg.net



vischar = find(cellfun('isclass',varargin,'char'));
for i=1:length(Prop)
    m = vischar(strmatch(Prop{i},varargin(vischar),'exact'));
    if ~isempty(m)
        assignin('caller',Prop{i},varargin{m+1});
        if nargin>2 && exist('PClass','var') && ...
                ~evalin('caller',['isa(' Prop{i} ',''' PClass{i} ''')'])
            errordlg(['Invalid input for ' Prop{i}],mfilename);
        end;
    else
        assignin('caller',Prop{i},NaN);
    end;
end;

Contact us at files@mathworks.com