Mercurial > hg > ltpda
view m-toolbox/classes/@ssm/ssmFromDescription.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line source
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % FUNCTION: ssmFromDescription % % DESCRIPTION: Construct a statespace model from a plist description % % CALL: see ssm, this function is private % % TODO: inplement multiple i/o when subassign function is done % % VERSION : '$Id: ssmFromDescription.m,v 1.33 2010/10/29 12:43:29 ingo Exp $'; % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function sys = ssmFromDescription(pli) VERSION = '$Id: ssmFromDescription.m,v 1.33 2010/10/29 12:43:29 ingo Exp $'; utils.helper.msg(utils.const.msg.MNAME, ['running ', mfilename]); % get info ii = ssm.getInfo('ssm', 'From Description'); % Set the method version string in the minfo object ii.setMversion([VERSION '-->' ii.mversion]); % Get default params pl = combine(pli, ii.plists); if ~isa(pl,'plist') % checking input type error(['error because input is not a plist but a ', class(pl)]); end sys = ssm.initObjectWithSize(1,1); % filling compulsory user defined fields userfields = { 'name' 'timestep' 'amats' 'bmats' 'cmats' 'dmats' 'description'}; % other optional fields that may be used defined otherfields = { 'params' 'inputs' 'outputs' 'states'}; dependentFields = {'statenames' 'inputnames' 'outputnames'}; for f = userfields if ~isparam(pl, f{1}) display(['### ERROR : field in ssm named ''',f{1},''' must be user defined ###']); display('### list of other compulsory user defined fields ###') display(char(userfields)) display('### list of other optional user defined fields ###') display(char(otherfields)) display('### list of other shortcuts ###') display(char(dependentFields)) error(['see above message and lists ^^ ']); end end % add history sys.addHistory(ii, pl, {''}, []); % Set other properties from the plist for f = userfields sys.(f{1})=find(pl, f{1}); end for f = [otherfields dependentFields] if isparam(pl, f{1}) if ~isempty(find(pl, f{1})) sys.(f{1})=find(pl, f{1}); end end end sys.validate; end