Interpolieren großen unregelmäßigen raster auf ein anderes unregelmäßigen raster in Python

Ich versuche zu interpolieren komplexe Werte von einem unregelmäßigen raster auf eine andere unregelmäßige raster mit Python. Die Gitter sind in 2D und es gibt 103,113 Daten Punkte. Ich bin mit Python 2.6.6, Scipy 0.7.2, Numpy 1.3.0, Matplotlib 0.99.3

In Matlab mit griddata erreicht wird dies in etwa 5 Sekunden.

BnGRID2  = griddata(R_GRID1,Z_GRID1,BnGRID1,R_GRID2,Z_GRID2) (MATLAB)

(Hinweis: alle arrays sind 201 x 513)

Allerdings, wenn ich versuche mit matplotlib.mlab.griddata bekomme ich eine memoryError-auch wenn ich versuche, die Arbeit mit den Realteil:

mlab.griddata(R_GRID1.flatten(),Z_GRID1.flatten(),num.real(BnGRID1.flatten()),R_GRID2.flatten(),Z_GRID2.flatten())

Wenn ich versuche über interp2d bekomme ich einen segmentation fault und Python-Ausgänge:

a = interp.interp2d(R_GRID1,Z_GRID1,num.real(BnGRID1))

Habe ich versucht, mit KDTree und das scheint zu funktionieren ok, aber es dauert ein paar Minuten, verglichen mit den paar Sekunden von Matlab, aber das habe ich noch nicht erforscht, diese option zu viel, aber.

Frage mich, ob jemand irgendwelche Ideen hat, wie kann ich das so schnell wie Matlab scheint? Ich habe bemerkt, dass die neuere version von Scipy hat auch griddata, weiß jemand, ob diese verarbeiten kann große unregelmäßige Netze?

InformationsquelleAutor s_haskey | 2011-10-09

Schreibe einen Kommentar