[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
end
function odds, arr
return, arr mod 2
end
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
end
and to get rid of the odds, e.g.:
IDL> a=exclude(b,"odds")
JD
--
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 |*|