www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgoptim/private/pCreateParametersOM.m
function om = pCreateParametersOM(options) %PCREATEPARAMETERSOM Create optimization manager from setup parameters. % % OM = CREATEPARAMETERSOM(OPTIONS) constructs an optimization manager % that contains the parameters in the cgoptimoptions object OPTIONS. % Copyright 2005-2007 The MathWorks, Inc. paramStruct = getParameters(options); om = setname(xregoptmgr, getName(options)); om = i_addParametersToOM(om, paramStruct); %-------------------------------------------------------------------------- function om = i_addParametersToOM(om, params) %-------------------------------------------------------------------------- if isempty( params ) % nothing to do return end if isa(params,'xregoptmgr'); % Params can be passed as an optim manager om = AddOption(om, 'Options', params, 'xregoptmgr'); return elseif isstruct(params) % Params can be passed as a structure array expectednames= {'label', 'typestr', 'typequalifier', 'value', 'displayname'}; fnames = fieldnames(params); if ~all(ismember(expectednames,fnames)) msg1 = 'Structure with fields ''type'', ''typequalifier'''; msg2 = '''label'', ''value'' and ''displayname'' is required.'; error(message('mbc:pCreateParametersOM:InvalidArgument', msg1, msg2)); end else error(message('mbc:xregoptmgr:InvalidArgument')); end % Only get here if we have a valid parameter structure. % Add the parameters to the optim's optim manager for i=1:length(params); % Extract information from the parameter structure name = params(i).label; typestr = params(i).typestr; typequalifier = params(i).typequalifier; defaultvalue = params(i).value; displayname = params(i).displayname; % Create the parameter in the optimmgr switch lower(typestr) case 'integer' om = AddOption(om, name, defaultvalue, ... {'int', typequalifier}, displayname); case 'number' om = AddOption(om, name, defaultvalue, ... {'numeric', typequalifier}, displayname); case 'boolean' om = AddOption(om, name, defaultvalue, ... 'boolean', displayname); case 'list' % Need to regenerate the list string, as optimmgrs do not % support cell arrays for specifying list options liststr = sprintf('%s|', typequalifier{:}); liststr(end) = ''; om = AddOption(om, name, defaultvalue, ... liststr, displayname); otherwise error(message('mbc:pCreateParametersOM:InvalidArgument1', name)); end end