0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 % Construct a matrix object from ltpda_uoh objects.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 3 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 4 % FUNCTION: fromInput
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 % DESCRIPTION: Construct a matrix object from ltpda_uoh objects.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8 % CALL: matrix = matrix.fromInput(inobjs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 %
43
+ − 10 % VERSION: $Id: fromInput.m,v 1.10 2011/12/05 07:40:23 hewitson Exp $
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 function obj = fromInput(obj, pli, callerIsMethod)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14
43
+ − 15 VERSION = '$Id: fromInput.m,v 1.10 2011/12/05 07:40:23 hewitson Exp $';
+ − 16
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 import utils.const.*
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 if callerIsMethod
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 % do nothing
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 else
43
+ − 22 % get AO info
+ − 23 ii = matrix.getInfo('matrix', 'From Input');
+ − 24
+ − 25 % Set the method version string in the minfo object
+ − 26 ii.setMversion([VERSION '-->' ii.mversion]);
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 end
43
+ − 28
+ − 29 % Combine input plist with default values
+ − 30 if callerIsMethod
+ − 31 pl = pli;
+ − 32 else
+ − 33 % Combine input plist with default values
+ − 34 % TODO: the parse step should be removed and included somehow into plist/applyDefaults
+ − 35 pl = applyDefaults(ii.plists, pli);
+ − 36 end
+ − 37
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 shape = pl.find('shape');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 objs = pl.find('objs');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 if iscell(objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 [inobjs, ao_invars, rest] = utils.helper.collect_objects(objs(:), '');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 if ~isempty(rest)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 warning('LTPDA:MATRIX', '### The matrix constructor collects only all %s-objects but there are some %s-objects left.', class(inobjs), class(rest{1}));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 inobjs = objs;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 if ~isempty(shape)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 obj.objs = reshape(inobjs, shape);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 obj.objs = inobjs;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 if callerIsMethod
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 % do less
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 pl.pset('shape', size(obj.objs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 % Remove the input objects from the plist because we add the histories of
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 % the input objects to the matrix object.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63 pl.remove('objs');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 inhists = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 if ~isempty(inobjs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67 inhists = [inobjs(:).hist];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 obj.addHistory(matrix.getInfo('matrix', 'None'), pl, [], inhists);
43
+ − 70
+ − 71 % Set any remaining object properties which exist in the default plist
+ − 72 obj.setObjectProperties(pl);
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75 end