[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: histogram question



JD Smith <jdsmith@astro.cornell.edu> wrote in message news:<3B71C2AA.7E91E5BA@astro.cornell.edu>...
>  for i=0,cnt-1 do begin 
>     low=r[r[bad[i]] & n=r[r[bad[i]+1]]-low
>     inds=indgen(n)+low
>     if n_elements(list) eq 0 then list=[inds] else list=[list,inds]
>  endfor 
> 
> now you have the list of bad indices into X in hand, to perform whatever
> punishment is necessary.
> 
It seems to be some misprint or my task misunderstanding. list is
indices into r, not into x.
  for i=0,cnt-1 do begin 
     inds = r[ r[bad[i]] : r[bad[i]+1]-1 ]
     if n_elements(list) eq 0 then list=[inds] else list=[list,inds]
  endfor 
We needn't to check r[bad[i]] NE r[bad[i]+1] because we adding only
not empty bins.
> This brings up an interesting sub-problem though.  If you have a list
> which consists of a series of pairs of indices, e.g.:
> 
> [1,5,7,12,15,18] 
> 
> where each pair is intended to expand to the range within that pair:
> 
> [1,2,3,4,5,7,8,9,10,11,12,15,16,17,18]
> 
> how can you turn the former into the latter without a loop?  This is
> somewhat similar to Pavel's running chunk index problem earlier in the
> year.  Finding an answer is not trivial.  It would apply directly to
> this problem, where the pairs are adjacent elements in the reverse
> indices vector.   Any takers?
From my experience it is much faster in such cases to write a DLM
module then to rack brains on how implement something not standart
into IDL operations. It would be wonderful if IDL has build in C
compiler so we could write C code (with some limitations of course)
just inside of our IDL code. As we do in C writing ASM.

Regards, 
Altyntsev Dmitriy