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