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

Home » Public Forums » archive » How to find second minimum elements in an array in IDL?
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: How to find second minimum elements in an array in IDL? [message #64814 is a reply to message #64724] Fri, 16 January 2009 07:08 Go to previous messageGo to previous message
Conor is currently offline  Conor
Messages: 138
Registered: February 2007
Senior Member
On Jan 15, 5:39 pm, "mgal...@gmail.com" <mgal...@gmail.com> wrote:
> On Jan 15, 10:36 am, cmanc...@gmail.com wrote:
>
>
>
>> I was curious, so I checked out your routine Mike. It looks good but
>> one problem - a for loop! I'm pretty sure you can replace:
>
>> nCandidates = 0L
>> for bin = 0L, nBins - 1L do begin
>> nCandidates += h[bin]
>> if (nCandidates ge n) then break
>> endfor
>
>> with:
>
>> max( total( h, /cumulative ) < n, bin )
>
>> which should work because max will return the first maximum value. Of
>> course, I was too lazy to see if the max(total()) method is actually
>> faster (since it involves a couple different compuatations), but oh
>> well, sometimes laziness wins :)
>
> It turns out that it probably doesn't matter much.
>
> It's not FOR loops per se that are bad, but the execution of many
> statements. For perfectly uniformly distributed data, the FOR loop
> above will only loop once -- more times the less uniformly distributed
> the data, bounded by the number of bins (i.e. number of data
> elements / number of elements required).
>
> Averages were computed for 500 runs of finding the smallest k=100
> elements of an n=1000000 element dataset.
>
> For uniform data:
>
> mg_n_smallest(randomu(seed, n), k)
>
> vectorized: 0.035663 seconds
> loops: 0.036040 seconds
> loops are 1.1% faster
>
> For perverse data:
>
> mg_n_smallest([randomu(seed, k - 1), randomu(seed, n - k + 1) + n /
> k], 100)
>
> vectorized: 0.279783 seconds
> loops: 0.281627 seconds
> vectorized is 0.7% faster
>
> Mike
> --www.michaelgalloy.com
> Tech-X Corporation
> Associate Research Scientist

I didn't really expect much of a difference. I think this is just a
personal preference of mine - it looks so much nice when it all fits
on one line!
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: Two Million Visitors!
Next Topic: Question relating to IDL wavelet methods

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

Current Time: Fri Oct 10 05:10:39 PDT 2025

Total time taken to generate the page: 0.55890 seconds