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 #64594 is a reply to message #64589] Thu, 08 January 2009 06:28 Go to previous messageGo to previous message
Tom McGlynn is currently offline  Tom McGlynn
Messages: 13
Registered: January 2008
Junior Member
On Jan 8, 4:59 am, hlde...@gmx.de wrote:
> ;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

Can't these last four lines be replaced by
detHist = detHist<1
acHist = acHist<1

The < and > operators are useful though not necessarily intuitive.

>
> ;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
>

To do it all at once, I think you can just go back to the data array
as below:

keepHist = where (diffHist EQ 1, cnt) ; From the original
if (cnt gt 0) then begin
keepers = intarr(n_elements(detHist))
keepers[keepHist] = 1;
keepIndices = where(keepers[data/ACLENGTH] eq 1)
endif else begin
keepIndices = [-1]
endelse

Haven't tested it, but it seems like it or something like it should
work reasonably efficiently.

Good luck,
Tom McGlynn
[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 10:29:35 PDT 2025

Total time taken to generate the page: 2.21145 seconds