6
votes

Problèmes avec une interpolation 2D dans Scipy

Dans ma candidature, les données de données sont échantillonnées sur une grille déformée et je voudrais la rétablimer à une grille non compris. Afin de tester cela, j'ai écrit ce programme avec des distorsions d'exemples et une fonction simple comme données: xxx

à ce stade, je dois répondre aux questions:

  1. Le code fonctionne, mais je reçois l'avertissement suivant:

    AVERTISSEMENT: plus de nœuds ne peuvent être ajoutés car le nombre de coefficients B-Spline Dépasse déjà le nombre de points de données m. Provoque probablement des causes: soit s ou m trop petit. (FP> S) KX, KY = 1,1 NX, NY = 54,31 m = 1500 FP = 0,000006 S = 0.000000

    En outre, certains artefacts d'interpolation apparaissent et je suppose qu'ils sont liés à l'avertissement - vous savez-vous ce que je fais mal?

    1. Pour mes applications actuelles, les cadres doivent être d'environ 500 * 100, mais quand je reçois un MemoryError - y a-t-il quelque chose que je peux faire pour aider cela, en dehors de la division du cadre en plusieurs parties?

      merci!


0 commentaires

3 Réponses :


-1
votes

Vous voudrez peut-être examiner la méthode Interp suivante à Basemap:

mpl_toolkits.basemap.interp http://matplotlib.sourceforge.net/basemap/doc/html/api /basemap_api.html

sauf si vous avez vraiment besoin d'une interpolation à base de spline.


1 commentaires

Désolé, cela ne vous aidera pas - mpl_toolkits.basemap.interp est uniquement destiné à interpoler une grille rectiligne à une autre. Cette condition n'est pas remplie par ma grille d'entrée.



1
votes

pour une interpolation 2D, GridData est solide, local, rapide. Jetez un coup d'oeil à Problème avec-2D-INTERPOLATION-IN- grille scipy-non rectangulaire sur donc.


0 commentaires

2
votes

Ce problème est probablement lié à l'utilisation de bisplrep et bisplev dans interp2d . docs mentionner qu'ils utilisent un facteur de frappe de zoot de S = 0,0 et que bisplrep et bisplev doit être utilisé directement si plus de contrôle sur < fort> s est nécessaire. Docs mention que s doit être trouvé entre (m-sqrt (2 * m), m + sqrt (2 * m)) m est le nombre de points utilisés pour construire les splines. J'ai eu un problème similaire et l'ai trouvé résolu lors de l'utilisation de bisplrep et bisplev directement, où s est uniquement facultatif.


2 commentaires

Mais c'est une interpolation linéaire, pourquoi les nœuds d'une spline sont-ils appelés?


Comment extrapoler en dehors du domaine X.Y à l'aide de Bisplrep et Bisplev?