0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 % EVAL evaluate a pest object
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 % DESCRIPTION: EVAL evaluate a pest model.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 % CALL: b = eval(p, pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 % b = eval(p, x, pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8 % b = eval(p, x1, ... , xN, pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 % b = eval(p, [x1 ... xN], pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 % INPUTS: p - input pest(s) containing parameter values.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 % xi - input ao(s) containing x values (as x or y fields, depending on the 'xfield' parameter)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 % pl - parameter list (see below)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 % OUTPUTs: b - an AO containing the model evaluated at the given X
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 % values, with the given parameter values.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 % <a href="matlab:utils.helper.displayMethodInfo('pest', 'eval')">Parameters Description</a>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 % VERSION: $Id: eval.m,v 1.28 2011/05/15 22:47:14 mauro Exp $
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22 % EXAMPLES:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24 % % 1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 % % Prepare the symbolic model
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26 % mdl = smodel(plist('expression', 'a1.*x + a2.*x.^2 + a0', 'xvar', 'x', 'yunits', 'V'));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28 % % Prepare the pest object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 % p = pest(plist('paramnames', {'a0','a1','a2'}, 'y', [1 2 3], 'models', mdl));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 % % Evaluate the object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33 % a1 = eval(p, plist('xdata', ao([1:10])))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 % a2 = eval(p, ao([1:10]))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36 % % 2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 % % Prepare the symbolic model
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 % mdl = smodel(plist('expression', 'a1.*x1 + a2.*x2 + a0', 'xvar', {'x1', 'x2'}, 'yunits', 'm', 'xunits', {'T', 'K'}));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40 % % Prepare the pest object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 % p = pest(plist('paramnames', {'a0','a1','a2'}, 'y', [1 2 3], 'yunits', {'m', 'T/m', 'K/m'}, 'models', mdl));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 % % Evaluate the object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45 % x1 = ao(plist('yvals', [1:10], 'fs', 1, 'yunits', 'T'));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 % x2 = ao(plist('yvals', [1:10], 'fs', 1, 'yunits', 'K'));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 % a1 = eval(p, plist('xdata', [x1 x2]))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 % a2 = eval(p, [x1 x2])
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 % a3 = eval(p, x1, x2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 function varargout = eval(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 % Check if this is a call for parameters
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56 if utils.helper.isinfocall(varargin{:})
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 varargout{1} = getInfo(varargin{3});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 return
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 import utils.const.*
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 utils.helper.msg(msg.PROC3, 'running %s/%s', mfilename('class'), mfilename);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64 % Collect input variable names
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 in_names = cell(size(varargin));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 for ii = 1:nargin,in_names{ii} = inputname(ii);end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68 % Collect all AOs and plists
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 [psts, pst_invars, rest] = utils.helper.collect_objects(varargin(:), 'pest', in_names);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70 [pl, pl_invars, rest] = utils.helper.collect_objects(rest, 'plist', in_names);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 71 [as, as_invars, rest] = utils.helper.collect_objects(rest, 'ao', in_names);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 72 [c, c_invars] = utils.helper.collect_objects(rest, 'cell', in_names);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74 if nargout == 0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75 error('### eval can not be used as a modifier method. Please give at least one output');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 76 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 77
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 78 % combine plists
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 79 pl = parse(pl, getDefaultPlist());
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 80
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 81 % Extract necessary parameters
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 82 index = find(pl, 'index');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 83 x = find(pl, 'Xdata');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 84 if ~isempty(as)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 85 x = as;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 86 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 87 % I don't know how to deal with the history of a cell array of aos
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 88 if ~isempty(c)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 89 error('Please pass the arguments in a vector or a list')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 90 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 91
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 92 % Extract the information about the x field, if necessary
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 93 xfield = pl.find('xfield');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 94 switch xfield
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 95 case 'x'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 96 op = str2func('x');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 97 case 'y'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 98 op = str2func('y');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 99 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 100 error('oops')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 101 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 102
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 103 % Extract the xvals for the smodel, and the output x for the ao
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 104 switch class(x)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 105 case 'cell'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 106 switch class(x{1})
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 107 case 'ao'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 108 data_type = find(pl, 'type');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 109 if isempty(data_type)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 110 % Nothing to do, output data type will be inherited from the first AO
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 111 if ~isa(x{1}.data, 'cdata')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 112 out_x = x{1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 113 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 114 out_x = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 115 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 116 out_xunits = '';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 117 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 118 % In this case I have to extract the vector with the output x and xunits
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 119 out_x = feval(op, x{1});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 120 out_xunits = feval(str2func([xfield 'units']), x{1});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 121 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 122 case 'double'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 123 data_type = find(pl, 'type');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 124 xvals = x;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 125 switch data_type
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 126 case {'tsdata', 'fsdata', 'xydata'}
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 127 out_x = x;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 128 out_xunits = find(pl, 'xunits');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 129 case {'cdata', ''}
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 130 out_x = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 131 out_xunits = '';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 132 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 133 error('LTPDA error')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 134 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 135 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 136 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 137 case 'ao'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 138 data_type = find(pl, 'type');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 139 if isempty(data_type)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 140 % Nothing to do, output data type will be inherited from the first AO
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 141 if ~isa(x(1).data, 'cdata')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 142 out_x = x(1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 143 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 144 out_x = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 145 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 146 out_xunits = '';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 147 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 148 % In this case I have to extract the vector with the output x and xunits
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 149 out_x = feval(op, x(1));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 150 out_xunits = feval(str2func([xfield 'units']), x(1));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 151 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 152 case 'double'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 153 data_type = find(pl, 'type');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 154 xvals = x;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 155 switch data_type
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 156 case {'tsdata', 'fsdata', 'xydata'}
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 157 out_x = x;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 158 case {'cdata', ''}
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 159 out_x = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 160 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 161 error('LTPDA error')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 162 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 163 out_xunits = find(pl, 'xunits');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 164 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 165 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 166
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 167 % If the user wants to override the pest/smodel yunits, let's get them
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 168 % This works only if the user sets them to something not empty
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 169 yunits = find(pl, 'yunits');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 170
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 171 % If we have AOs in a cell....
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 172 if iscell(x) && all(cellfun(@(x)isa(x, 'ao'), x))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 173 % if we have multiple x, we need to convert the y values into a cell array
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 174 xvals = cellfun(op, x, 'UniformOutput', false);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 175 elseif isa(x, 'ao')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 176 % we put the y values in to a cell array
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 177 if numel(x) > 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 178 xvals = cellfun(op, num2cell(x), 'UniformOutput', false);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 179 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 180 % ... we take the x values, as per the help
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 181 xvals = feval(op, x);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 182 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 183 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 184
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 185 % Loop over input objects
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 186 for jj = 1:numel(psts)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 187
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 188 pst = psts(jj);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 189 % evaluate models
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 190 m = copy(pst.models, true);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 191 switch class(m)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 192 case 'smodel'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 193 % Make sure the smodel parameters are named the same as the pest
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 194 m(index).setParams(pst.names, pst.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 195 % If the user provided the x vector(s), override the smodel x with these
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 196 if ~isempty(xvals)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 197 m(index).setXvals(xvals);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 198 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 199 % Go for the model evaluation
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 200 out(jj) = eval(m(index), plist(...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 201 'output type', data_type, 'output x', out_x, 'output xunits', out_xunits));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 202
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 203 % Setting the units of the evaluated model
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 204 if ~isempty(yunits)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 205 out(jj).setYunits(yunits);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 206 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 207
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 208 case 'ao'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 209 % do linear combination: using lincom
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 210 out(jj) = lincom(m, pst);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 211 out(jj).simplifyYunits;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 212
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 213
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 214 case 'matrix'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 215 % check objects of the matrix and switch
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 216 switch class(m(1).objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 217 case 'smodel'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 218 % Make sure the smodel parameters are named the same as the pest
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 219 for ii = 1:numel(m.objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 220 m.objs(ii).setParams(pst.names, pst.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 221 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 222 % If the user provided the x vector(s), override the smodel x with these
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 223 if ~isempty(x)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 224 for ii = 1:numel(m.objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 225 m.objs(ii).setXvals(x);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 226 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 227 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 228 % Go for the model evaluation
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 229 tout = ao.initObjectWithSize(size(m.objs,1),size(m.objs,2));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 230 for ii=1:size(m.objs,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 231 for kk=1:size(m.objs,2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 232 tout(ii,kk) = eval(m.objs(ii,kk), plist(...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 233 'output type', data_type, 'output x', out_x));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 234 % Setting the units of the evaluated model
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 235 if ~isempty(yunits)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 236 tout(ii,kk).setYunits(yunits);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 237 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 238 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 239 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 240 out(jj) = matrix(tout);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 241 case 'ao'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 242 % get params from the pest object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 243 prms = pst.y;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 244 % build cdata aos
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 245 prmsao = ao.initObjectWithSize(numel(prms),1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 246 for ii = 1:numel(prms)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 247 prmsao(ii) = ao(cdata(prms(ii)));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 248 prmsao(ii).setYunits(pst.yunits(ii));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 249 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 250 % build matrix for parameters
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 251 prm = matrix(prmsao);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 252 % build matrix for the model
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 253 mm = ao.initObjectWithSize(numel(m(1).objs),numel(prms));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 254 for ii = 1:numel(m(1).objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 255 for kk = 1:numel(prms)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 256 mm(ii,kk) = m(kk).getObjectAtIndex(ii);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 257 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 258 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 259 mmat = matrix(mm);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 260 % eval model
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 261 tout = mmat*prm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 262 out(jj) = tout;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 263 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 264 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 265 error('### current version of pest/eval needs the ''models'' field to be a smodel')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 266 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 267
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 268
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 269
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 270 % uncertainties for the evaluated model: calculate them from covariance matrix
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 271 if ~isempty(pst.cov) && utils.prog.yes2true(pl.find('errors'));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 272 switch class(m)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 273 case 'smodel'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 274 C = pst.cov;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 275 p = pst.names;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 276 % here we need a matrix of "functions" which are the derivatives wrt parameters,
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 277 % evaluated at each point x:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 278
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 279 F = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 280 for kk = 1:length(p)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 281 md = eval(diff(m(index), plist('var', p{kk})));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 282 F = [F md.y];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 283 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 284 % The formula is:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 285 % D = F * C * F';
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 286 % and then we need to take
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 287 % dy = sqrt(diag(D))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 288 if size(md.y, 1) > 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 289 % Make sure we work with columns
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 290 out(jj).setDy(sqrt(sum((F * C)' .* F'))');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 291 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 292 out(jj).setDy(sqrt(sum((F' * C)' .* F)));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 293 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 294
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 295 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 296 warning('Propagation of the errors on the model not yet implemented')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 297 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 298 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 299
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 300 % Set output AO name
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 301 name = sprintf('eval(%s,', pst.name);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 302 for kk = 2:numel(pst)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 303 name = [name pst(kk).name ','];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 304 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 305 name = [name(1:end-1) ')'];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 306 out(jj).name = name;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 307 % Add history
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 308 if isempty(as)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 309 out(jj).addHistory(getInfo('None'), pl, pst_invars, pst(:).hist);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 310 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 311 out(jj).addHistory(getInfo('None'), pl, {pst_invars as_invars}, [pst(:).hist as(:).hist]);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 312 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 313 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 314
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 315 % Set output
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 316 varargout = utils.helper.setoutputs(nargout, out);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 317
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 318 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 319
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 320
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 321 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 322 % Get Info Object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 323 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 324 function ii = getInfo(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 325 if nargin == 1 && strcmpi(varargin{1}, 'None')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 326 sets = {};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 327 pl = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 328 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 329 sets = {'Default'};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 330 pl = getDefaultPlist();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 331 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 332 % Build info object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 333 ii = minfo(mfilename, 'pest', 'ltpda', utils.const.categories.sigproc, '$Id: eval.m,v 1.28 2011/05/15 22:47:14 mauro Exp $', sets, pl);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 334 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 335
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 336 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 337 % Get Default Plist
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 338 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 339 function plout = getDefaultPlist()
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 340 persistent pl;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 341 if ~exist('pl', 'var') || isempty(pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 342 pl = buildplist();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 343 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 344 plout = pl;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 345 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 346
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 347 function pl = buildplist()
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 348
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 349 pl = plist();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 350
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 351 % INDEX
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 352 p = param({'index', 'Select which model must be evaluated if more than one.'}, paramValue.DOUBLE_VALUE(1));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 353 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 354
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 355 % XDATA
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 356 p = param({'Xdata', ['The X values to evaluate the model at. This can be:<ul>'...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 357 '<li>a double vector </li>' ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 358 '<li>a cell array of double vectors</li>' ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 359 '<li>a single AO (from which the Y data will be extracted)</li>' ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 360 '<li>a cell array of AOs (from which the Y data will be extracted)</li></ul>' ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 361 ]}, paramValue.EMPTY_DOUBLE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 362 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 363
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 364 % XFIELD
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 365 p = param({'xfield', 'Choose the field to extract the x values from when inputting AOs for parameter ''xdata''.'}, {2, {'x', 'y'}, paramValue.SINGLE});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 366 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 367
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 368 % TYPE
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 369 pv = paramValue.DATA_TYPES;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 370 % Add an 'empty' on top of the list
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 371 pv{2} = [{''} pv{2}];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 372 p = param({'type', ['Choose the data type for the output ao.<br>'...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 373 'If empty, and if the user input AOs as ''XDATA'', the type will be inherited.']}, pv);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 374 p.val.setValIndex(1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 375 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 376
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 377 % YUNITS
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 378 p = param({'yunits','Unit on Y axis.'}, paramValue.STRING_VALUE(''));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 379 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 380
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 381 % XUNITS
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 382 p = param({'xunits','Unit on X axis.'}, paramValue.STRING_VALUE(''));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 383 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 384
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 385 % ERRORS
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 386 p = param({'errors', ['Estimate the uncertainty of the output values based <br>' ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 387 'on the parameters covariance matrix']}, paramValue.TRUE_FALSE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 388 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 389
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 390 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 391 % END