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