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
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.
merci! Je vais regarder dans ceux-ci. – reckoner
yay! bon travail! – reckoner