function o = spoptimget(options,name,default,flag) % SPOPTIMGET Get sparse grid optimization OPTIONS parameters. % VAL = SPOPTIMGET(OPTIONS,'NAME') extracts the value of the % named property from the sparse grid options structure OPTIONS, % returning an empty matrix if the property value is not % specified in OPTIONS. It is sufficient to type only the leading % characters that uniquely identify the property. Case is ignored % for property names. [] is a valid OPTIONS argument. % % VAL = SPOPTIMGET(OPTIONS,'NAME',DEFAULT) extracts the named % property as above, but returns VAL = DEFAULT if the named % property is not specified in OPTIONS. For example % % val = spoptimget(opts, 'Maximize', 'off'); % % returns val = 'off' if the Maximize property is not specified in opts. % % See also SPOPTIMSET, SPCOMPSEARCH, SPFMINSEARCH, SPCGSEARCH, % SPMULTISTART % Author : Andreas Klimke % Version: 1.2 % Date : November 13, 2006 % Change log: % V1.2 : November 13, 2006 % Cleaned up options. % V1.1 : August 8, 2005 % Added BisectGap and funTol parameters % V1.0 : June 9, 2005 % Initial version % Note: SPOPTIMGET is similar in syntax and code to the options % handling with ODEGET and ODESET of the MATLAB ODE suite by Marc % Reichelt and Lawrence Shampine. % ------------------------------------------------------------ % Sparse Grid Interpolation Toolbox % Copyright (c) 2006 W. Andreas Klimke, Universitaet Stuttgart % Copyright (c) 2007-2008 W. A. Klimke. All Rights Reserved. % See LICENSE.txt for license. % email: klimkeas@ians.uni-stuttgart.de % web : http://www.ians.uni-stuttgart.de/spinterp % ------------------------------------------------------------ % undocumented usage for fast access with no error checking if (nargin == 4) & isequal(flag,'fast') o = getknownfield(options,name,default); return end if nargin < 2 error('Not enough input arguments.'); end if nargin < 3 default = []; end if ~isempty(options) & ~isa(options,'struct') error(['First argument must be an options structure created with' ... ' SPOPTIMSET.']); end if isempty(options) o = default; return; end Names = {'Minimize', 'Maximize', 'TolFun', 'TolX', ... 'MaxIter', 'StartPoint', 'TestCorners', 'PrevResult', ... 'Method', 'NumStarts', 'OptimsetOptions', 'Display'}; m = length(Names); for k = 1:m names{k} = lower(Names{k}); end lowName = lower(name); matched = strmatch(lowName,names); if isempty(matched) % if no matches error(sprintf(['Unrecognized property name ''%s''. ' ... 'See SPOPTIMSET for possibilities.'], name)); elseif length(matched) > 1 msg = sprintf('Ambiguous property name ''%s'' ', name); msg = [msg '(' Names{matched}]; for k = j(2:length(matched))' msg = [msg ', ' Names{matched}]; end msg = sprintf('%s).', msg); error(msg); end if any(strcmp(fieldnames(options),Names{matched})) o = options.(Names{matched}); if isempty(o) o = default; end else o = default; end %----------------------------------------------------------------------- function v = getknownfield(s, f, d) % GETKNOWNFIELD Get field f from struct s, or else yield default d. if isfield(s,f) % s could be empty. v = subsref(s, struct('type','.','subs',f)); if isempty(v) v = d; end else v = d; end