[Numpy-discussion] interpolating arrays (?)

RayS rays at blue-cove.com
Tue Mar 23 22:00:25 CST 2004


Hi Tim,

I implemented the below code with good results; and if I go to a C version 
in the future I'll let you know. As the raw data is integer and a bit 
coarse at times, it will also help to have a non-linear method. I use a 
parabolic interpolation for finding centriods of clipped stellar images, 
but that's still Python too.

>With that one comes up with (untested):
>
>def rubberBand(self, y, desiredLength):
>       # Define raw so that raw[0] == 0 and raw[-1] == len(y)-1 and 
> len(raw) == desiredLength
>        raw =arange(desiredLength) * (len(y) - 1) / (float(desiredLength) - 1)
>        jVals = na.clip(na.floor(raw), 0, len(y)-2).astype('i')
>        delta = raw - jVals
>        dy = y[1:] - y[:-1]
>        return na.take(y, jVals) + delta * na.take(dy, jVals)
>
>Hope that's helpful,

quite.

>PS, I just realized, these snippets assume a 'import numarray as na' 
>somewhere above. Numeric should also work if the names are adjusted 
>appropriately.

It does. I use Numeric for when arrays are length< 2000, as someone posted 
some results to that effect a while back. numarray is certainly faster for 
images.

In general, I'm using FFT for ballpark estimation of periodicity, then 
doing time domain data comparison for more precise alignment.

Thanks to Chris, Konrad and Warren as well,

Ray





More information about the Numpy-discussion mailing list