2D Interpolation of Large Irregular Grid to Regular Grid
I have 2048x2048 mesh of irregular data zi = f(xi, yi)
which are essentially three independent sets of 2048 real values. I n开发者_如何学Pythoneed to smoothly interpolate (perhaps bicubic spline) that into a regular mesh of wi = f(ui, vi)
where ui
and vi
are integer values from 0 to 2047.
I have tried griddata which seems to work well at images less than 1000x1000, but blows up as you get to 1500x1500 (memory qhull errors for the Delaunay Mesh evidently). I have looked at some of ndimage
functions, namely geometric_transform
, RectBivariateSpline
and map_coordinates
, but they all seem to take regularized data as input. I could be missing something and just implementing it wrong though too!
I am trying to use Python/SciPy to do what this Matlab script I have been doing using tformarray
and makeresampler
. Any suggestions as to what function I can use to process this large data set? Thanks!
I tried to reproduce your errors without success. Are you on a 32 bit system? I had problems with scipy/numpy and large arrays so switched to 64 bit, and have had no problems since then.
Here's the code I used to try to reproduce your error (it will generate nothing useful, but should at least experience the same errors):
y,x=indices([2048,2048],dtype='float64')
z = randn(2048,2048)
yr = y + randn(2048,2048)
xr = x + randn(2048,2048)
zn = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y)
zl = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y,interp='linear')
This works on my machine.
If you can't run a 64 bit version of python (which can be difficult depending on what OS you're using), could you break your 2048x2048 grid into 4 1024x1024 grids?
精彩评论