From octave-maintainers-request at bevo dot che dot wisc dot edu Mon Mar 17 07:43:14 2003 Subject: RE: Modifications to hist.m From: "Lippert, Ross A." To: "Paul Kienzle" , "Andy Adler" Cc: Date: Mon, 17 Mar 2003 08:45:57 -0500 I was recently helping someone at work here out with a faster hist. This one is simpler, but perhaps it is broken in some way that others here will not want to use it. I did something like this: if (size(y,1) == 1) [ans,I] = sort([y cutoff -inf]); elseif (size(y,2) == 1) [ans,I] = sort([y' cutoff -inf]); else error("y must be a row or vector"); endif freq = diff(find(I > length(y)))-1; where cutoff is computed just as it was computed before and y is the given data. There are some +/- inf issues which may be problematic with the above so perhaps one could instead do: [ans,I] = sort([y cutoff]); freq = diff( [0 find(I > length(y))] ) - 1; and get the same effect. I figured that the extra log(n) of a C sort isn't really consequential. -r -----Original Message----- From: Paul Kienzle [mailto:pkienzle at users dot sourceforge dot net] Sent: Saturday, March 15, 2003 9:43 PM To: Andy Adler Cc: octave-maintainers at bevo dot che dot wisc dot edu Subject: Re: Modifications to hist.m Andy Adler wrote: >I propose the following patch to hist.m; >it results in about 2.5x speedup. > At one point a rewrote hist to not have any loops. I was doing a whole lot of really large histograms (e.g., 100000 values drawn from a poisson distribution --- I had to rewrite the poisson generator too ;-) Please check it out and tell me if it is any faster than what you've got. I think it might be slower if you have a histogram with a lot of empty bins. Thanks, Paul Kienzle pkienzle at users dot sf dot net