Phew! Grande argomento.
La risposta "giusta" dipende da un numero di lotto sul dominio del problema e vari dettagli su ciò che si sta facendo.
L'interpolazione di più di una dimensione richiede alcune scelte. Immagino che tu stia pianificando su una griglia regolare, ma che alcuni dei tuoi punti della griglia non abbiano dati. Grande domanda: i punti mancanti sono scarsi o fanno grossi blob?
È Non possibile aggiungere informazioni, in modo che stai solo cercando di stabilire qualcosa che guardare OK.
Concettualmente semplice suggestione (ma l'implementazione può essere un certo lavoro):
Per ciascuna regione sui dati mancanti, identificare tutti i punti di bordo. Cioè trovare le x in questa figura
oooxxooo
oox..xoo
oox...xo
ox..xxoo
oox.xooo
oooxoooo
dove i. Di sono i punti mancanti di dati, e le X e O sono i dati (per un singolo punto mancante, questo sarà i quattro vicini più prossimi). Riempi tutti i punti dati mancanti con una media sui punti di bordo attorno a questo blob. Per rendere più agevole, peso ogni punto da 1/d
dove d è la distanza tassista (delta x + y delta) tra i due punti ..
Dalla prima abbiamo avuto alcun dettaglio:
In l'assenza di questo tipo di informazioni, hai provato in modo lineare l'interpolazione lineare? Se i tuoi dati sono ragionevolmente densi questo potrebbe farlo per te, ed è abbastanza semplice codificare in linea quando ne hai bisogno.
Il passo successivo è in genere una spline cubica, ma per questo probabilmente vorrai prendere un'implementazione esistente.
Quando ho bisogno di qualcosa di più potente di un'interpolazione lineare veloce, io di solito uso ROOT (e scegliere una delle classi TSpline), ma questo potrebbe essere più in alto del necessario.
Come notato nei commenti, Root è grande, e mentre è veloce, lo fa cercare di forzare a fare le cose nel modo ROOT, quindi può avere un grande effetto sul vostro programma.
Un'interpolazione lineare tra (o addirittura estrapolazione da) due punti (x1, y1) e (x2, y2) ti dà
y_i = (x_i-x1)*(y2-y1)/(x2-x1)
Ulteriori informazioni necessarie: che tipo di dati è? Puoi dire qualcosa sulla natura delle curve (ad esempio, come appaiono?) – Rook
I dati sono una matrice 2-d di valori di intensità. Voglio creare un'immagine di qualche tipo. È un progetto scolastico. – Sam
Quindi, in sostanza, non delle risposte seguenti ha risposto alla domanda sul suggerimento di una libreria o di una funzione .... perché ho lo stesso identico problema di op. – bakalolo