Je cherche un C++ équivalent à la fonction Gridata de Matlab, ou n'importe quelle méthode d'interpolation globale 2D.Matlab griddata équivalent en C++
J'ai un code C++ qui utilise Eigen 3. Je vais avoir un vecteur propre qui contiendra les valeurs x, y et z, et deux matrices propres équivalentes à celles produites par Meshgrid dans Matlab. Je voudrais interpoler les valeurs z des vecteurs sur les points de la grille définis par les équivalents Meshgrid (qui dépasseront un peu l'extérieur des points d'origine, donc une extrapolation mineure est requise).
Je ne suis pas trop gêné par la précision - il n'a pas besoin d'être parfait. Cependant, je ne peux pas accepter NaN comme une solution - l'interpolation doit être calculée partout sur le maillage, indépendamment des lacunes de données. En d'autres termes, rester à l'intérieur de la coque convexe n'est pas une option.
Je préférerais ne pas écrire une interpolation à partir de zéro, mais si quelqu'un veut me montrer une recette assez bonne (et explicite), je vais essayer. Ce n'est pas la chose la plus haineuse à écrire (du moins dans un sens algorithmique), mais je ne veux pas réinventer la roue.
Effectivement ce que j'ai sont des emplacements de terrain dispersés, et je souhaite définir un maillage rectiligne qui suit nominalement une certaine distance sous la topographie pour une utilisation ultérieure. Une fois que j'ai les points de noeud, je serai bon.
Mes recherches jusqu'à présent:
La question posée ici: MATLAB functions in C++ a produit une réponse proche, mais malheureusement, la suggestion n'a pas été libre (SciMath).
J'ai essayé de comprendre la fonction d'interpolation utilisée dans Generic Mapping Tools, et j'ai été récompensé par un mal de tête. J'ai brièvement regardé dans la bibliothèque Algorithmes de la Grille (GRAL). Si quelqu'un a un commentaire, je l'apprécierais. Eigen a un paquet d'interpolation non supporté, mais il semble être juste pour des courbes (pas des surfaces).
Éditer: VTK a une fonctionnalité de matplotlib. Vraisemblablement, il doit y avoir une interpolation utilisée quelque part à des fins d'affichage. Est-ce que quelqu'un sait si c'est accessible et utilisable?
Merci.
Avez-vous jeté un coup d'œil à Freemat? – PopcornKing
Je n'avais pas - ce n'est pas exactement ce que je cherchais, mais c'est assez proche. Merci! –
Ah, malheureusement, il s'avère que griddata/interp2/etc ne sont pas implémentés dans FreeMat. Tellement proche! –