大型不规则网格到规则网格的二维插值

时间:2011-08-15 17:10:07

标签: python numpy grid scipy interpolation

我有2048x2048网格的不规则数据zi = f(xi, yi),它们基本上是三组独立的2048个实数值。我需要平滑插入(可能是双三次样条)到wi = f(ui, vi)的常规网格中,其中uivi是从0到2047的整数值。

我已经尝试过griddata,它似乎适用于低于1000x1000的图像,但是当你达到1500x1500时会爆炸(对于Delaunay Mesh显然存在内存qhull错误)。我查看了一些ndimage函数,即geometric_transformRectBivariateSplinemap_coordinates,但它们似乎都将正则化数据作为输入。我可能会遗漏一些东西而且实际上也错了!

我正在尝试使用Python / SciPy来执行我使用tformarraymakeresampler进行的Matlab脚本。有关我可以用来处理这个大型数据集的功能的任何建议吗?谢谢!

1 个答案:

答案 0 :(得分:2)

我试图重现你的错误而没有成功。你是32位系统吗?我有scipy / numpy和大数组的问题,所以切换到64位,从那以后没有问题。

以下是我用来尝试重现错误的代码(它不会产生任何有用的信息,但至少应该遇到相同的错误):

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')

这适用于我的机器。

如果你不能运行64位版本的python(这可能很难取决于你正在使用的操作系统),你能否将2048x2048网格分成4个1024x1024网格?