0001 function varargout = hist(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
0037 ALGONAME = mfilename;
0038 VERSION = '$Id: hist.m,v 1.5 2007/10/31 17:03:45 ingo Exp $';
0039
0040
0041 if nargin == 2
0042 if isa(varargin{1}, 'ao') && ischar(varargin{2})
0043 in = char(varargin{2});
0044 if strcmp(in, 'Params')
0045 varargout{1} = getDefaultPL();
0046 return
0047 elseif strcmp(in, 'Version')
0048 varargout{1} = VERSION;
0049 return
0050 end
0051 end
0052 end
0053
0054
0055 invars = {};
0056 as = [];
0057 ps = [];
0058 Nbins = -1;
0059 Xbins = [];
0060 for j=1:nargin
0061 if isa(varargin{j}, 'ao')
0062 invars = [invars cellstr(inputname(j))];
0063 end
0064 if isa(varargin{j}, 'ao')
0065 as = [as varargin{j}];
0066 end
0067 if isa(varargin{j}, 'plist')
0068 ps = [ps varargin{j}];
0069 end
0070 if isnumeric(varargin{j})
0071 if length(varargin{j}) > 1
0072 Xbins = varargin{j};
0073 else
0074 Nbins = varargin{j};
0075 end
0076 end
0077 end
0078
0079
0080 if isa(ps, 'plist')
0081 pl = combine(ps, getDefaultPL());
0082 else
0083 pl = getDefaultPL();
0084 end
0085
0086
0087 if ~isempty(Xbins)
0088 pl = set(pl, 'X', Xbins);
0089 end
0090
0091
0092 if Nbins>0
0093 pl = set(pl, 'N', Nbins);
0094 end
0095
0096
0097 N = find(pl, 'N');
0098 X = find(pl, 'X');
0099
0100
0101
0102
0103 bs = [];
0104
0105
0106 for j=1:numel(as)
0107 a = as(j);
0108
0109
0110 [x, y] = get_xy_values(a.data);
0111
0112
0113 if isempty(X)
0114 disp(sprintf('** sorting data into %d bins', N));
0115 [n,x] = hist(y, N);
0116 else
0117 disp(sprintf('** sorting data into %d bins', length(X)));
0118 [n,x] = hist(y, X);
0119 end
0120
0121
0122
0123
0124 xy = xydata(x, n);
0125 xy = set(xy, 'name', sprintf('hist(%s)', a.data.name));
0126 xy = set(xy, 'xunits', a.data.yunits);
0127 xy = set(xy, 'yunits', 'Count');
0128
0129
0130 h = history(ALGONAME, VERSION, pl, a.hist);
0131 h = set(h, 'invars', invars);
0132
0133
0134 b = ao(xy, h);
0135
0136
0137 if j > length(invars)
0138 n1 = a.name;
0139 else
0140 n1 = invars{j};
0141 end
0142 b = setnh(b, 'name', sprintf('hist(%s)', n1));
0143 bs = [bs b];
0144
0145 end
0146
0147
0148 bs = reshape(bs, size(as));
0149
0150
0151
0152 varargout{1} = bs;
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162 function plo = getDefaultPL()
0163
0164 disp('* creating default plist...');
0165 plo = plist();
0166 plo = append(plo, param('N', 10));
0167 plo = append(plo, param('X', []));
0168 disp('* done.');
0169
0170
0171