diff m-toolbox/test/template_test_models/ao_model_a.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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/test/template_test_models/ao_model_a.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,188 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% DESCRIPTION: Builtin model for A
+%
+% This model adds together model 'b' and model 'c'.
+%
+%
+% CALL:
+%           p = ao(plist('built-in','a'))
+%
+% INPUTS:
+%
+%
+% OUTPUTS:
+%           - p: an AO object representing a
+%
+%
+% INFO:
+%   <a href="matlab:web(modelOverview(ao_model_a('info')), '-helpbrowser')">Model Information</a>
+%
+%
+% REFERENCES:
+%
+%
+% VERSION:     $Id: ao_model_a.m,v 1.4 2010/09/16 09:10:17 hewitson Exp $
+%
+% HISTORY:
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+function varargout = ao_model_a(varargin)
+  
+  % Process inputs
+  [info, pl, constructorInfo, fcn] = utils.models.processModelInputs(varargin(:), ...
+    mfilename, ...
+    @getModelDescription, ...
+    @getModelDocumentation, ...
+    @getVersion, ...
+    @versionTable);
+  if ~isempty(info)
+    varargout{1} = info;
+    return;
+  end
+  
+  % Build the object
+  out = fcn();
+  
+  % Set the method version string in the minfo object
+  if ~isempty(constructorInfo)
+    % If this is a user-call via a constructor, then we add history
+    out = addHistoryStep(out, constructorInfo, pl);
+  end
+  
+  if nargout > 0
+    varargout{1} = out;
+    varargout{2} = pl;
+  else
+    error('!!! Invalid number of output')
+  end
+end
+
+
+%--------------------------------------------------------------------------
+% AUTHORS EDIT THIS PART
+%--------------------------------------------------------------------------
+
+function desc = getModelDescription
+  desc = 'My nice model which adds together two other models, $b+c$.';
+end
+
+function doc = getModelDocumentation
+  doc = sprintf([...
+    'This model does the amazing mathematical plus operation.\n'...
+    '<br><br>\n'...
+    '$b+c$\n'...
+    ]);
+end
+
+% default version is always the first one
+function vt = versionTable()
+  
+  vt = {...
+    'Better Version', @version2, ...
+    'Version One', @version1, ...
+    };
+  
+end
+
+% This version uses:
+%  model b, version 'alpha'
+%  model c, version 'initial'
+%
+function varargout = version1(varargin)
+  
+  if nargin == 1 && ischar(varargin{1})
+    switch varargin{1}
+      case 'plist'
+        
+        % The plist for this version of this model
+        pl = plist();
+        
+        % parameter a
+        p = param({'a', 'Parameter a of the model'}, paramValue.DOUBLE_VALUE(1));
+        pl.append(p);
+        
+        % set output
+        varargout{1} = pl;
+        
+      case 'description'
+        varargout{1} = 'Using model b version ''alpha'' and model c version ''initial''.';
+      case 'info'
+        varargout{1} = [ao_model_b('info', 'alpha') ao_model_c('info', 'initial')];
+      otherwise
+        error('unknown inputs');
+    end
+    return;
+  end
+  
+  % build model
+  
+  b = ao_model_b(plist('version', 'alpha'));
+  c = ao_model_c(plist('version', 'initial'));
+  
+  
+  varargout{1} = b+c;
+  
+end
+
+
+% This version uses:
+%  model b, version 'alpha'
+%  model c, version 'second'
+%
+function varargout = version2(varargin)
+  
+  if nargin == 1 && ischar(varargin{1})
+    switch varargin{1}
+      case 'plist'
+        
+        % The plist for this version of this model
+        pl = plist();
+        
+        % parameter a
+        p = param({'a', 'Parameter a of the model'}, paramValue.DOUBLE_VALUE(10));
+        pl.append(p);
+        
+        % Expose some parameters of the submodel b
+        plb = ao_model_b('plist', 'alpha');
+        plb = plb.subset('b');
+        pl.combine(plb);
+        
+        % set output
+        varargout{1} = pl;
+        
+      case 'description'
+        varargout{1} = 'Using model b version ''alpha'' and model c version ''second''.';
+      case 'info'
+        varargout{1} = [ao_model_b('info', 'alpha') ao_model_c('info', 'second')];
+      otherwise
+        error('unknown inputs');
+    end
+    return;
+  end
+  
+  % build model
+  
+  b = ao_model_b(plist('version', 'alpha'));
+  c = ao_model_c(plist('version', 'second'));
+  
+  
+  varargout{1} = b+c;
+end
+
+%--------------------------------------------------------------------------
+% AUTHORS SHOULD NOT NEED TO EDIT BELOW HERE
+%--------------------------------------------------------------------------
+
+
+%--------------------------------------------------------------------------
+% Get Version
+%--------------------------------------------------------------------------
+function v = getVersion
+  
+  v = '$Id: ao_model_a.m,v 1.4 2010/09/16 09:10:17 hewitson Exp $';
+  
+end