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

Home » Public Forums » archive » Re: Anyway to avoid this last 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: Anyway to avoid this last for loop [message #64598 is a reply to message #64594] Thu, 08 January 2009 05:54 Go to previous messageGo to previous message
R.Bauer is currently offline  R.Bauer
Messages: 1424
Registered: November 1998
Senior Member
There is no PEP8 for idl somewhere defined, or isn't it. And if so I
probably have to clean also my code

The example is difficult to read.

Reimar



hldevil@gmx.de schrieb:
> Hi Everybody,
>
> after having worked my way through dfannings and jdsmiths histogram
> tips I still haven't found a way to avoid one last (and time
> consuming) FOR-loop. Maybe someone has an idea.
>
> I have to lists (Millions of entries): one containing detector hit-
> times, one containing anticoincidence hit-times. Only those detector
> hits which do not have a AC event at the same time are supposed to be
> kept.
>
> I used a histogram approach:
>
> ;AClength is how many frames are thrown out after one AC Hit ->
> multiple entries can fall into one bin
>
> detHist=histogram(data,REVERSE_INDICES=ri, /L64, binSize=AClength)
> acHist=histogram(ACdeletes, /L64, binSize=AClength)
>
>
> ;renormalize to one
> dI=where(detHist GT 1, cntD)
> aI=where(acHist GT 1, cntA)
> IF cntD NE 0 THEN detHist[dI]=1
> IF cntA NE 0 THEN acHist[aI]=1
>
> ;subtract the two histograms. All detector frames which have
> corresponding AC frame should now have value 0, if AC frame exists but
> not detector frame then value is -1. If only detector frame exists
> (the ones we want) value stays 1!!!
> diffHist=detHist-acHist
>
> ;keep the ones with one
> keep=where(diffHist EQ 1, cnt)
>
> ;And now my problem. I need the indices of the keep-frames but there
> can be more than one in a bin so I'm stuck with this loop:
>
> FOR k=0L, cnt-1 DO BEGIN
> keepIndices=[keepIndices,ri[ri[keep[k]]:ri[keep[k]+1]-1]]
> ENDFOR
>
> Is there any way I can avoid this, especially because it scales with
> the number of hits which are kept.
>
> Best Regards,
>
> Steffen
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Compile/Restore on Startup
Next Topic: How to write an array into a dateset as a band, not a dateset?

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

Current Time: Sat Oct 11 07:47:01 PDT 2025

Total time taken to generate the page: 2.55939 seconds