Re: Pair Counts in an Annulus, for large data sets [message #51258] |
Sat, 11 November 2006 04:28  |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
Tara writes:
> I have a large data set (~350,000 galaxies) of x,y points. For a given
> radius R [R=sqrt(x^2+y^2)], I need to count the total number of pairs
> in the annulus R+deltaR. That is, I choose a given data point as my
> center, then count the number of points that lie inside that annulus. I
> then do this for each of my data points to get the total number of
> pairs. A simplified version of the code I'm using now is as follows:
>
> I've tried my best to avoid the urge to put lots of for loops
> everywhere (you should have seen it before!), but I just don't know how
> to make it drastically more efficient. There must be a way though,
> because the computations for my code are just ridiculous.... Is there a
> way to eliminate that nasty loop I have, which would help things?
>
> Any help you can give would be greatly appreciated. I'm very new to
> IDL, as you surely know. I'm and undergrad, too.
Well, then, you are about to learn something about the most
mysterious IDL command of all: HISTOGRAM. For that is
*exactly* what you are trying to do. HISTOGRAM counts
how many things are in each "bin" of a particular size.
And it can even tell you which of the things you are
counting are stored in each bin.
I think your problem can be solved something like this
r = SQRT(x^2+y^2)
h = HISTOGRAM(r, BINSIZE=deltaR, REVERSE_INDICES=ri)
The famous Histogram Tutorial will provide all the information
you need to get beyond this:
http://www.dfanning.com/tips/histogram_tutorial.html
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|
|
|