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 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10 % VERSION: $Id: fromInput.m,v 1.9 2011/02/14 13:20:24 ingo Exp $
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
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 import utils.const.*
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 if callerIsMethod
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 % do nothing
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 pl = pli;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 utils.helper.msg(msg.OPROC1, 'Construct from inputs');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22 pl = combine(pli, matrix.getDefaultPlist('From Input'));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24 shape = pl.find('shape');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 objs = pl.find('objs');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 if iscell(objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28 [inobjs, ao_invars, rest] = utils.helper.collect_objects(objs(:), '');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 if ~isempty(rest)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 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
+ − 31 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33 inobjs = objs;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36 if ~isempty(shape)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 obj.objs = reshape(inobjs, shape);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 obj.objs = inobjs;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 if callerIsMethod
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 % do less
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 pl.pset('shape', size(obj.objs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 % Remove the input objects from the plist because we add the histories of
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 % the input objects to the matrix object.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 pl.remove('objs');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 inhists = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 if ~isempty(inobjs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 inhists = [inobjs(:).hist];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 obj.addHistory(matrix.getInfo('matrix', 'None'), pl, [], inhists);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56 warning('off', utils.const.warnings.METHOD_NOT_FOUND);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 % remove parameters we already used
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 pl_set = copy(pl,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59 if pl_set.isparam('objs')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 pl_set.remove('objs');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 if pl_set.isparam('shape')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63 pl_set.remove('shape');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 obj.setProperties(pl_set);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 warning('on', utils.const.warnings.METHOD_NOT_FOUND);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 end