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

Re: idl2matlab translate-o-matic

David McClain wrote:
> I knew that if you thought about it you would begin to understand my
> point...
> Try this one... Give me a function to return the array result of removing
> selected items from an argument array.
> Since I can't pass a testing function to that routine (IDL doesn't have
> higher order functions), I will accept a routine, for illustrative purposes,
> that removes all even values from the array.
> Now suppose some joker passes an array containing only even values to that
> routine...
> - DM

wh=where(array mod 2, cnt)
if cnt gt 0 then return,array[wh] else return, -1

I use scalars (often -1) as cheap and easy to use empty arrays.  Anything with:

 size(x,/N_DIMEN) eq 0

is patently *not* an array.  

And as far as the lack of "higher order testing functions":

function evens, arr
   return, arr mod 2 eq 0

function odds, arr
   return, arr mod 2

function exclude,arr, exc_func
   wh=where(call_function(exc_func,arr) eq 0,cnt)
   if cnt gt 0 then return,arr[wh] else return,-1

and to get rid of the odds, e.g.:

IDL> a=exclude(b,"odds")


 J.D. Smith                             |*|      WORK: (607) 255-5842    
 Cornell University Dept. of Astronomy  |*|            (607) 255-6263
 304 Space Sciences Bldg.               |*|       FAX: (607) 255-5875 
 Ithaca, NY 14853                       |*|