¡Uf! Gran tema.
La respuesta "correcta" depende mucho en el dominio de su problema y varios detalles de lo que está haciendo.
La interpolación en más de 1 dimensión requiere tomar algunas decisiones. Asumiré que estás tramando en una grilla regular, pero que algunos de tus puntos de grilla no tienen datos. Gran pregunta: ¿faltan los puntos faltantes o forman grandes manchas?
Usted no puede añadir información, por lo que está tratando de establecer algo que va a mirar OK.
sugerencia conceptualmente simple (pero la implementación puede ser un poco de trabajo):
Para cada región en los datos que faltan, identificar todos los puntos de borde. Eso es encontrar las x en esta figura
oooxxooo
oox..xoo
oox...xo
ox..xxoo
oox.xooo
oooxoooo
en los años. Son los puntos de datos faltantes, y los xyo de disponer de datos (para un único punto que falta, esto será los cuatro vecinos más cercanos). Complete cada punto de datos faltante con un promedio sobre los puntos de borde alrededor de este blob. Para que sea suave, el peso de cada punto por 1/d
donde d es la distancia taxidriver (delta x + delta y) entre los dos puntos ..
Desde antes teníamos ningún detalle:
En la ausencia de ese tipo de información, ¿has probado la interpolación lineal en línea recta? Si sus datos son razonablemente densos, esto podría hacerlo por usted, y es lo suficientemente simple como para codificar en línea cuando lo necesite.
El siguiente paso es generalmente una spline cúbica, pero para eso es probable que desee obtener una implementación existente.
Cuando necesito algo más poderoso que una interpolación lineal rápida, que suelen utilizar ROOT (y recoger una de las clases TSpline), pero esto puede ser más sobrecarga de lo que necesita.
Como se señaló en los comentarios, ROOT es grande, y si bien es rápido, trata de forzarte a hacer las cosas al estilo ROOT, por lo que puede tener un gran efecto en tu programa.
una interpolación lineal entre (o, de hecho extrapolación de) dos puntos (x1, y1) y (x2, y2) le da
y_i = (x_i-x1)*(y2-y1)/(x2-x1)
Información adicional necesaria: ¿Qué tipo de datos es? ¿Puedes decir algo sobre la naturaleza de las curvas (es decir, cómo se ven?) – Rook
Los datos son una matriz de 2 d de valores de intensidad. Quiero crear una imagen de algún tipo. Es un proyecto escolar. – Sam
Así que, básicamente, ninguna de las siguientes respuestas respondió la pregunta sobre la sugerencia de una biblioteca o función ... porque estoy teniendo exactamente el mismo problema que op. – bakalolo