0001 function ao_out = sum (varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 ALGONAME = mfilename;
0037 VERSION = '$Id: sum.m,v 1.3 2007/06/22 08:32:49 ingo Exp $';
0038 ao_out = [];
0039 pl = plist();
0040 option = '';
0041
0042
0043 if nargin == 2
0044 if isa(varargin{1}, 'ao') && ischar(varargin{2})
0045 in = char(varargin{2});
0046 if strcmp(in, 'Params')
0047 ao_out = getDefaultPL();
0048 return
0049 end
0050 end
0051 end
0052
0053
0054 ao_set = [];
0055 for i=1:nargin
0056 a = varargin{i};
0057 if isa(a, 'ao')
0058 [m,n] = size(a);
0059 for i = 1:m
0060 for j = 1:n
0061 ao_set = [ao_set a(i,j)];
0062 end
0063 end
0064 elseif isa(varargin{i}, 'plist')
0065 pl = [pl varargin{i}];
0066 elseif isnumeric(varargin{i})
0067 pl = [pl plist(param('dim', varargin{i}))];
0068 end
0069 end
0070
0071 if ~isempty (pl)
0072 pl = combine(pl);
0073 end
0074
0075
0076 for j=1:length(ao_set)
0077 a = ao_set(j);
0078
0079 [h, sum_data] = single_operation(a.data, 'sum', pl);
0080
0081
0082 h = set(h, 'inhists', [a.hist]);
0083
0084
0085 if (j <= nargin)
0086 if (isempty (inputname(j)))
0087 h = set(h, 'invars', cellstr('no var_name'));
0088 else
0089 h = set(h, 'invars', cellstr(inputname(j)));
0090 end
0091 else
0092 h = set(h, 'invars', cellstr('no var_name'));
0093 end
0094
0095
0096 sum_x = [];
0097 sum_y = [];
0098
0099 do_xdata = find(pl, 'xdata');
0100 do_ydata = find(pl, 'ydata');
0101
0102
0103
0104 if isempty(do_xdata) && isempty(do_ydata)
0105 do_ydata = 'yes';
0106 end
0107
0108
0109 pl_get_axis = plist([param('xdata', do_xdata) param('ydata', do_ydata)]);
0110 [sum_x, sum_y] = get_xy_axis(sum_data, pl_get_axis);
0111
0112 sum_cdata = cdata([sum_x sum_y]);
0113 sum_cdata = set (sum_cdata, 'name', sum_data.name);
0114 sum_cdata = set (sum_cdata, 'xunits', sum_data.xunits);
0115 sum_cdata = set (sum_cdata, 'yunits', sum_data.yunits);
0116
0117
0118 new_ao = a;
0119 new_ao = ao (sum_cdata, h);
0120 new_ao = set (new_ao, 'name', sprintf('sum(%s)',a.name) );
0121
0122 ao_out = [ao_out new_ao];
0123
0124 end
0125
0126
0127 function plo = getDefaultPL()
0128
0129 disp('* creating default plist...');
0130 plo = plist();
0131 plo = append(plo, param('xdata', ''));
0132 plo = append(plo, param('ydata', ''));
0133 plo = append(plo, param('dim', []));
0134 disp('* done.');
0135
0136
0137