Re: Loop breaks IDL [message #62099 is a reply to message #62098] |
Fri, 22 August 2008 20:47   |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
mbweller@gmail.com writes:
> I beginning to feel like I'm inundating this board :)
>
> Is this the best way to do this, I 'm beginning to think not since IDL
> (in windows) starts to use up all my cpu cycles for more than 10
> minutes.
>
> ------------------------------------------------------------ -----------------------------
> ind_e= where (array[1,*] eq 2,count)
> if count eq 0 then tl_small=0 else ext=array[*,ind_e]
> while count gt 0 do begin
> ext_ = where(ext[2,*] lt 2*x1) ; select faults such that L < 2x
> ext_small = ext[*,ext_] ; place in matrice with identifer
> lc_small= ext_small[2,*] ; select only lengths to sum for
> small faults
> tl_small = total(lc_small^3) ; sum lengths according to
> kostrov summation, small faults
> endwhile
> ------------------------------------------------------------ ------------------------------------------------------------ -------------------
>
> Essentially there are 2 divisions, column 2 (with values of 1 or 2)
> and fault size (large or small) of the data.
> In case it's not obvious, the first two lines are saying that if there
> is no data then tl_small = 0. If however, there is data do everything
> below it to get some non 0 value of tl_small.
> It seems like IDL just hangs up on the loop. Maybe this has something
> to do with the embedded where statements?
>
> As always thanks in advance and any help would be appreciated
I would try transposing your array so you can access the
data in memory order. That should help a LOT.
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.")
|
|
|