2009-12-29 4 views
0

Je me rends compte qu'il y a un griddata pour NumPy via Matplotlib, mais y at-il un griddata3 (même griddata, mais pour les dimensions plus élevées)? En d'autres termes, j'ai (x, y, z, d (x, y, z)) où (x, y, z) forment une grille irrégulière et d (x, y, z) est un scalaire fonction de trois variables. J'ai besoin de générer d (xi, yi, zi) pour un nouvel ensemble de points (xi, yi, zi) en utilisant une sorte d'interpolation capable de gérer la non-uniformité des données originales (x, y, z). En fin de compte, les données (xi, yi, zi, d (xi, yi, zi)) devront être rendues en surface, mais c'est un problème pour plus tard. Je n'ai pas non plus de forme analytique pour la fonction d (.); J'ai juste des données pour ça.Griddata3 de MATLAB pour NumPy?

Répondre

1

SciPy 0,9 (pour le moment, une première bêta est sortie) a une nouvelle fonction griddata qui peut gérer des données N-dimensionnelles.

+0

yay! bon travail! – reckoner

0

Je ne suis pas familier avec griddata3, mais vous voudrez peut-être regarder dans meshgrid et cela post.

1

Vous ne savez pas exactement comment vous comptez rendre une surface d'une fonction scalaire de 3 variables, sauf peut-être en utilisant des plans de coupe ou quelque chose de similaire. Mayavi (vraiment VTK qui alimente Mayavi) a un support pour la triangulation Delaunay efficace via enthought.mayavi.mlab.pipeline.delaunay3d, qui est le noyau de l'algorithme utilisé par griddata3. Voir the 2D example code qu'ils ont posté, il suffit d'ajouter une dimension (et utiliser delaunay3d à la place). Je ne connais pas de moyen d'obtenir explicitement les valeurs interpolées utilisées pour rendre la surface, mais il pourrait y avoir un moyen de l'échantillonner via Mayavi, vous pourriez fouiller dans la documentation ou demander sur l'une des listes de diffusion Enthought. En variante, l'une des fonctions C de la bibliothèque NCAR natgrid peut être utile, c'est-à-dire dsgrid3d. Un wrapper partiel est implémenté en tant que matplotlib toolkit.

+0

merci! Je vais regarder dans ceux-ci. – reckoner