0001 function bo = select(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 ALGONAME = mfilename;
0027 VERSION = '$Id: select.m,v 1.12 2007/11/02 12:26:24 ingo Exp $';
0028
0029
0030 if nargin == 2
0031 if isa(varargin{1}, 'ao') && ischar(varargin{2})
0032 in = char(varargin{2});
0033 if strcmp(in, 'Params')
0034 bo = getDefaultPL();
0035 return
0036 elseif strcmp(in, 'Version')
0037 bo = VERSION;
0038 return
0039 end
0040 end
0041 end
0042
0043
0044 invars = {};
0045 for j=1:nargin
0046 if isa(varargin{j}, 'ao')
0047 invars = [invars cellstr(inputname(j))];
0048 end
0049 end
0050
0051
0052 as = [];
0053 ps = [];
0054 samples = [];
0055 for j=1:nargin
0056 if isa(varargin{j}, 'ao')
0057 as = [as varargin{j}];
0058 end
0059 if isa(varargin{j}, 'plist')
0060 ps = [ps varargin{j}];
0061 end
0062 if isnumeric(varargin{j})
0063 samples = [samples varargin{j}];
0064 end
0065 end
0066
0067 if isempty(as)
0068 error('### Please input at least one AO.');
0069 end
0070 if isempty(ps) && isempty(samples)
0071 error('### Please specify samples to select directly or as a plist.');
0072 end
0073
0074
0075 if ~isempty(ps)
0076 pl = combine(ps);
0077 else
0078 pl = plist();
0079 end
0080
0081
0082 samples = [samples find(pl, 'samples')];
0083
0084
0085 bo = [];
0086 for j=1:numel(as)
0087
0088 a = as(j);
0089 d = a.data;
0090
0091 [x,y] = get_xy_values(d);
0092
0093 if isa(d, 'cdata')
0094 if length(d.tags) == length(d.vals)
0095 d = set_xy_axis(d, x(samples), y(samples));
0096 else
0097 d = set_xy_axis(d, x, y(samples));
0098 end
0099 else
0100 d = set_xy_axis(d, x(samples), y(samples));
0101 end
0102
0103
0104
0105
0106 h = history(ALGONAME, VERSION, plist(param('samples', samples)), a.hist);
0107 h = set(h, 'invars', invars);
0108
0109
0110 b = ao(d, h);
0111
0112
0113
0114 if j > length(invars)
0115 n1 = a.name;
0116 else
0117 n1 = invars{j};
0118 end
0119 b = setnh(b, 'name', sprintf('select(%s)', n1));
0120
0121
0122 bo = [bo b];
0123
0124 end
0125
0126
0127 bo = reshape(bo, size(as));
0128
0129
0130 function plo = getDefaultPL()
0131
0132 plo = plist();
0133 plo = append(plo, param('samples', []));
0134
0135