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