| 1 | function mds = modellist(varargin)
|
|---|
| 2 | %MODEL - constructor for a list of models
|
|---|
| 3 | %
|
|---|
| 4 | % Usage:
|
|---|
| 5 | % mds = modellist(varargin)
|
|---|
| 6 |
|
|---|
| 7 | switch nargin
|
|---|
| 8 |
|
|---|
| 9 | case 0
|
|---|
| 10 |
|
|---|
| 11 | % if no input arguments, create a default object
|
|---|
| 12 | mds.models=cell(0,1);
|
|---|
| 13 |
|
|---|
| 14 | %fields:
|
|---|
| 15 | mds.name='';
|
|---|
| 16 | mds.cluster='';
|
|---|
| 17 | mds.queue='';
|
|---|
| 18 | mds.time=0;
|
|---|
| 19 | mds.np=0;
|
|---|
| 20 |
|
|---|
| 21 | %output
|
|---|
| 22 | mds=class(mds,'modellist');
|
|---|
| 23 |
|
|---|
| 24 | %set default parameters
|
|---|
| 25 | mds=setdefaultparameters(mds);
|
|---|
| 26 |
|
|---|
| 27 | case 1
|
|---|
| 28 |
|
|---|
| 29 | %If single argument of class model, we have a copy constructor.
|
|---|
| 30 | if (isa(varargin{1},'modellist'))
|
|---|
| 31 | mds = varargin{1};
|
|---|
| 32 | elseif (isa(varargin{1},'cell'))
|
|---|
| 33 | celllist=varargin{1};
|
|---|
| 34 |
|
|---|
| 35 | %user gave us a list of models, plug them in mds.models, and do some set up
|
|---|
| 36 | mds=modellist;
|
|---|
| 37 |
|
|---|
| 38 | %check on size of cell list:
|
|---|
| 39 | if (size(celllist,2)~=1),
|
|---|
| 40 | error('modellist constructor error message: list of models should be a cell list of column size 1');
|
|---|
| 41 | end
|
|---|
| 42 |
|
|---|
| 43 | %check that only models are in the celllist:
|
|---|
| 44 | for i=1:size(celllist,1),
|
|---|
| 45 | md=celllist{i};
|
|---|
| 46 | if ~isa(md,'model')
|
|---|
| 47 | error(['modellist constructor error message: element ' num2str(i) ' of cell list is not a model!']);
|
|---|
| 48 | end
|
|---|
| 49 | end
|
|---|
| 50 |
|
|---|
| 51 | %initialize
|
|---|
| 52 | mds.models=celllist;
|
|---|
| 53 |
|
|---|
| 54 | %set some default parameters:
|
|---|
| 55 | if size(celllist,1),
|
|---|
| 56 | %pick up 1st model for default parameters
|
|---|
| 57 | mds.cluster=mds.models{1}.cluster;
|
|---|
| 58 | mds.name=mds.models{1}.name;
|
|---|
| 59 | mds.queue=mds.models{1}.queue;
|
|---|
| 60 | mds.time=mds.models{1}.time;
|
|---|
| 61 | end
|
|---|
| 62 | else
|
|---|
| 63 | error('model constructor error message: copy constructor called on a non ''model'' class object');
|
|---|
| 64 | end
|
|---|
| 65 | otherwise
|
|---|
| 66 | error('model constructor error message: 0 of 1 argument only in input.');
|
|---|
| 67 | end
|
|---|