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 ALGONAME = mfilename;
0030 VERSION = '$Id: hist.html,v 1.1 2007/06/08 14:15:02 hewitson Exp $';
0031
0032
0033 invars = {};
0034 as = [];
0035 ps = [];
0036 Nbins = -1;
0037 Xbins = [];
0038 for j=1:nargin
0039 if isa(varargin{j}, 'ao')
0040 invars = [invars cellstr(inputname(j))];
0041 end
0042 if isa(varargin{j}, 'ao')
0043 as = [as varargin{j}];
0044 end
0045 if isa(varargin{j}, 'plist')
0046 ps = [ps varargin{j}];
0047 end
0048 if isnumeric(varargin{j})
0049 if length(varargin{j}) > 1
0050 Xbins = varargin{j};
0051 else
0052 Nbins = varargin{j};
0053 end
0054 end
0055 end
0056
0057
0058 if isa(ps, 'plist')
0059 pl = combine(ps, getDefaultPL());
0060 else
0061 pl = getDefaultPL();
0062 end
0063
0064
0065 if ~isempty(Xbins)
0066 pl = set(pl, 'X', Xbins);
0067 end
0068
0069
0070 if Nbins>0
0071 pl = set(pl, 'N', Nbins);
0072 end
0073
0074
0075 na = length(as);
0076
0077
0078
0079 N = find(pl, 'N');
0080 X = find(pl, 'X');
0081
0082
0083
0084
0085 bs = [];
0086
0087
0088 for j=1:na
0089 a = as(j);
0090
0091
0092 y = getAOdata(a);
0093
0094
0095 if isempty(X)
0096 disp(sprintf('** sorting data into %d bins', N));
0097 [n,x] = hist(y, N);
0098 else
0099 disp(sprintf('** sorting data into %d bins', length(X)));
0100 [n,x] = hist(y, X);
0101 end
0102
0103
0104
0105
0106 xy = xydata(x, n);
0107 xy = set(xy, 'name', sprintf('hist(%s)', a.data.name));
0108 xy = set(xy, 'xunits', a.data.yunits);
0109 xy = set(xy, 'yunits', 'Count');
0110
0111
0112 h = history(ALGONAME, VERSION, pl, a.hist);
0113 h = set(h, 'invars', invars);
0114
0115
0116 b = ao(xy, h);
0117
0118
0119 if isempty(invars{j})
0120 n1 = a.name;
0121 else
0122 n1 = invars{j};
0123 end
0124 b = set(b, 'name', sprintf('hist(%s)', n1));
0125 bs = [bs b];
0126
0127 end
0128
0129
0130 varargout{1} = bs;
0131
0132
0133
0134
0135
0136
0137
0138
0139 function plo = getDefaultPL()
0140
0141 disp('* creating default plist...');
0142 plo = plist();
0143 plo = append(plo, param('N', 10));
0144 plo = append(plo, param('X', []));
0145 disp('* done.');
0146
0147
0148
0149