comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Help with getting rid of a FOR loop
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Help with getting rid of a FOR loop [message #60473] Tue, 20 May 2008 20:02 Go to previous message
nathan12343 is currently offline  nathan12343
Messages: 14
Registered: August 2007
Junior Member
On May 20, 8:36 pm, nathan12343 <nathan12...@gmail.com> wrote:
> On May 20, 5:48 pm, nathan12343 <nathan12...@gmail.com> wrote:
>
>
>
>> On May 20, 5:33 pm, pgri...@gmail.com wrote:
>
>>> Jean H wrote:
>>>> > dist=sqrt((xx-xcenter)^2+(yy-ycenter)^2)  ;array of radii
>
>>>> > mask=fltarr(imsize,imsize)-1
>
>>>> > FOR i=0,num-1 DO BEGIN
>>>> >     wh=where(dist GE r[i] and dist LE r[i+1])
>>>> >     mask[wh]=i
>>>> > ENDFOR
>
>>>> > END
>
>>>> > I would like to find some way to get rid of the FOR loop at the end.
>>>> > All I'm doing in that loop is going through the annuli one by one,
>>>> > finding the pixels in that annuli, and setting the corresponding
>>>> > pixels in mask to the correct mask value.
>
>>>> > Thanks for any help anyone can provide!
>
>>>> > Nathan Goldbaum
>
>>>> Hi Nathan,
>
>>>> if your computer memory permits it, you can
>>>> 1) reform your dist array so it is now a n_elements(dist) *
>>>> n_elements(r) array. basically, you will copy the distances
>>>> n_elements(r) times.
>>>> 2) reform your r array so it is now a n_elements(dist) * n_elements(r)
>>>> array.
>>>> 3) shift the array from (2) by 1
>>>> 4) do where(new_dist GT new_r and new_dist LT new_r_plus_1)
>>>> 5) divide the returned index by n_elements(r). You will know, for each
>>>> r, which elements satisfies your condition!
>
>>> I guess that the original problem is not so much that for loops are
>>> slow,
>>> but that "where" is slow. So I fear that the above strategy won't gain
>>> much speed, as now where must work on a much larger array...
>
>>> Ciao,
>>> Paolo
>
>>>> Sorry if it is not too clear... that's a "quick answer before to leave"...
>>>> Jean
>
>> Will histogram work with unevenly spaced bins?
>
> Histogram does work for irregular binsizes if you use VALUE_LOCATE, I
> think I'll be able to do this using histogram.

Thanks for the histogram suggestion!

This code is about 15 times faster than it was before, I'm glad I
learned about histogram :)

-Nathan
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: iTools export to variable woes
Next Topic: interact with iimage from the command line?

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 15:52:11 PDT 2025

Total time taken to generate the page: 0.00451 seconds