www.gusucode.com > sloptim工具箱matlab源码程序 > sloptim/sloptim/newsro.m
function Proj = newsro(Model,Params) %NEWSRO Create default response optimization project for Simulink model. % % NEWSRO will be removed in a future release. Use the new Simulink Design % Optimization command line interface instead, see sdo.optimize for more % information. % % PROJ = NEWSRO(MODELNAME,PARAMETERS) creates a new optimization project % PROJ for the Simulink model with name MODELNAME. The tuned parameters % are specified by the cell array of character vectors PARAMETERS. The % specified model should contain at least one Signal Constraint block % from the Simulink Design Optimization library (see SDOLIB). % % Type HELP SROPROJECT for more information on how to customize and % run a Response Optimization project. % % Example % p = newsro('srodemo1',{'P' 'I' 'D'}) % % See also RESPONSEOPTIMIZER/FINDCONSTR, RESPONSEOPTIMIZER/FINDPAR, % GETSRO, RESPONSEOPTIMIZER/OPTIMIZE, SROPROJECT. % Copyright 1990-2016 The MathWorks, Inc. %Warn about updated SDO command line ctrlMsgUtils.warning('sldo:general:warnSDOUpdate_RemoveX','newsro'); narginchk(2,2) % Is the model open? LoadFlag = isempty( find_system('Name', Model, 'Type', 'block_diagram') ); if LoadFlag try load_system(Model) catch E throw(E) end end % Look for SRO blocks SROBlocks = find_system(Model,'FollowLinks','on','LookUnderMasks','all',... 'RegExp','on','BlockType','SubSystem','LogID','SRO_DataLog_\d'); if isempty(SROBlocks) ctrlMsgUtils.error('Sloptim:sloptim:errNoSROBlocks',Model) end % Creates project specification for Simulink model ProjForm = srogui.SimProjectForm; ProjForm.Name = Model; % Initialize project with one constraint per block in MODEL ProjForm.init(Model) % Get list of all model parameters utils = slcontrol.Utilities; AllVars = getTunableParameters(utils,ProjForm.Model); AllVars = {AllVars.Name}; % Check parameters against list of tunable model parameters if ischar(Params) Params = {Params}; elseif ~iscellstr(Params) ctrlMsgUtils.error('Sloptim:sloptim:errParamNameCell') end isValid = ismember(strtok(Params,'.({'),AllVars); idxNotValid = find(~isValid); if ~isempty(idxNotValid) ctrlMsgUtils.error('Sloptim:sloptim:errUndefinedVar',Params{idxNotValid(1)}) end % Create parameter specs and initialize parameters ParForms = []; for ct=1:numel(Params) ps = srogui.ParameterForm(Params{ct}); ParForms = [ParForms ; ps]; %#ok<AGROW> end ProjForm.Parameters = ParForms; % Evaluate project specification try Proj = evalForm(ProjForm); catch E rethrow(E) end % Clean up if LoadFlag close_system(Model,0) end