Main Content

griddata

Interpolar datos dispersos 2D o 3D

Descripción

ejemplo

vq = griddata(x,y,v,xq,yq) ajusta una superficie con el formato v = f(x,y) a los datos dispersos en los vectores (x,y,v). La función griddata interpola la superficie en los puntos de consulta especificados por (xq,yq) y devuelve los valores interpolados, vq. La superficie pasa siempre por los puntos de datos definidos por x e y.

ejemplo

vq = griddata(x,y,z,v,xq,yq,zq) se ajusta a una hipersuperficie con la forma v = f(x,y,z).

vq = griddata(___,method) especifica el método de interpolación utilizado para calcular vq usando cualquiera de los argumentos de entrada de las sintaxis anteriores. method puede ser "linear", "nearest", "natural", "cubic" o "v4". El método predeterminado es "linear".

[Xq,Yq,vq] = griddata(x,y,v,xq,yq) y [Xq,Yq,vq] = griddata(x,y,v,xq,yq,method) devuelven además Xq e Yq, que contienen las coordenadas de cuadrícula de los puntos de consulta.

Ejemplos

contraer todo

Interpole datos dispersos aleatorios en una cuadrícula uniforme de puntos de consulta.

Muestree una función en 200 puntos aleatorios entre -2.5 y 2.5. Los vectores resultantes x, y y v contienen puntos de muestra dispersos y valores de datos en esos puntos.

rng default
xy = -2.5 + 5*rand([200 2]);
x = xy(:,1);
y = xy(:,2);
v = x.*exp(-x.^2-y.^2);

Defina una cuadrícula de puntos de consulta e interpole los datos dispersos en la cuadrícula.

[xq,yq] = meshgrid(-2:.2:2, -2:.2:2);
vq = griddata(x,y,v,xq,yq);

Represente los datos de la cuadrícula como una malla y los datos dispersos como puntos.

mesh(xq,yq,vq)
hold on
plot3(x,y,v,"o")
xlim([-2.7 2.7])
ylim([-2.7 2.7])

Figure contains an axes object. The axes object contains 2 objects of type surface, line. One or more of the lines displays its values using only markers

Interpole un corte 3D de una función 4D muestreada en puntos dispersos de forma aleatoria.

Muestree una función 4D v(x,y,z) en 2500 puntos aleatorios entre -1 y 1. Los vectores x, y y z contienen los puntos de muestra no uniformes.

x = 2*rand(2500,1) - 1; 
y = 2*rand(2500,1) - 1; 
z = 2*rand(2500,1) - 1;
v = x.^2 + y.^3 - z.^4;

Cree una cuadrícula con xy puntos en el intervalo [-1, 1] y establezca z=0. La interpolación en esta cuadrícula de puntos de consulta 2D (xq,yq,0) produce un corte interpolado 3D (xq,yq,0,vq) del conjunto de datos 4D (x,y,z,v).

d = -1:0.05:1;
[xq,yq,zq] = meshgrid(d,d,0);

Interpole los datos dispersos en la cuadrícula. Represente los resultados.

vq = griddata(x,y,z,v,xq,yq,zq);
plot3(x,y,v,"ro")
hold on
surf(xq,yq,vq)
hold off

Figure contains an axes object. The axes object contains 2 objects of type line, surface. One or more of the lines displays its values using only markers

Compare los resultados de varios algoritmos de interpolación diferentes que ofrece griddata.

Cree un conjunto de datos de muestra de 50 puntos dispersos. El número de puntos es artificialmente pequeño para resaltar las diferencias entre los métodos de interpolación.

x = -3 + 6*rand(50,1);
y = -3 + 6*rand(50,1);
v = sin(x).^4 .* cos(y);

Cree una cuadrícula de puntos de consulta.

[xq,yq] = meshgrid(-3:0.1:3);

Interpole los datos de muestra utilizando los métodos "nearest", "linear", "natural" y "cubic". Represente los resultados para compararlos.

z1 = griddata(x,y,v,xq,yq,"nearest");
plot3(x,y,v,"mo")
hold on
mesh(xq,yq,z1)
title("Nearest Neighbor")
legend("Sample Points","Interpolated Surface","Location","NorthWest")

Figure contains an axes object. The axes object with title Nearest Neighbor contains 2 objects of type line, surface. One or more of the lines displays its values using only markers These objects represent Sample Points, Interpolated Surface.

z2 = griddata(x,y,v,xq,yq,"linear");
figure
plot3(x,y,v,"mo")
hold on
mesh(xq,yq,z2)
title("Linear")
legend("Sample Points","Interpolated Surface","Location","NorthWest")

Figure contains an axes object. The axes object with title Linear contains 2 objects of type line, surface. One or more of the lines displays its values using only markers These objects represent Sample Points, Interpolated Surface.

z3 = griddata(x,y,v,xq,yq,"natural");
figure
plot3(x,y,v,"mo")
hold on
mesh(xq,yq,z3)
title("Natural Neighbor")
legend("Sample Points","Interpolated Surface","Location","NorthWest")

Figure contains an axes object. The axes object with title Natural Neighbor contains 2 objects of type line, surface. One or more of the lines displays its values using only markers These objects represent Sample Points, Interpolated Surface.

z4 = griddata(x,y,v,xq,yq,"cubic");
figure
plot3(x,y,v,"mo")
hold on
mesh(xq,yq,z4)
title("Cubic")
legend("Sample Points","Interpolated Surface","Location","NorthWest")

Figure contains an axes object. The axes object with title Cubic contains 2 objects of type line, surface. One or more of the lines displays its values using only markers These objects represent Sample Points, Interpolated Surface.

Represente la solución exacta.

figure
plot3(x,y,v,"mo")
hold on
mesh(xq,yq,sin(xq).^4 .* cos(yq))
title("Exact Solution")
legend("Sample Points","Exact Surface","Location","NorthWest")

Figure contains an axes object. The axes object with title Exact Solution contains 2 objects of type line, surface. One or more of the lines displays its values using only markers These objects represent Sample Points, Exact Surface.

Argumentos de entrada

contraer todo

Coordenadas de los puntos de muestra, especificadas como vectores. Los elementos correspondientes en x, y y z especifican las coordenadas xyz de los puntos en los que se conocen los valores de la muestra v. Los puntos de muestra deben ser únicos.

Tipos de datos: double

Valores de muestra, especificados como vector. Los valores de muestra de v se corresponden con los puntos de muestra de x, y y z.

Si v contiene números complejos, la función griddata interpola las partes reales y las imaginarias de forma independiente.

Tipos de datos: double
Soporte de números complejos:

Puntos de consulta, especificados como vectores o arreglos. Los elementos correspondientes de los vectores o arreglos especifican las coordenadas xyz de los puntos de consulta. Los puntos de consulta son las ubicaciones en las que griddata realiza la interpolación.

  • Especifique arreglos si desea pasar una cuadrícula de puntos de consulta. Use ndgrid o meshgrid para crear los arreglos.

  • Especifique vectores si desea pasar una colección de puntos dispersos.

Los puntos de consulta especificados deben encontrarse dentro de la envolvente convexa de los puntos de datos de muestra. griddata devuelve NaN si los puntos de consulta están fuera de la envolvente convexa.

Tipos de datos: double

Método de interpolación, especificado como uno de los métodos de esta tabla.

MétodoDescripciónContinuidad
"linear"Interpolación lineal basada en triangulación (valor predeterminado) que admite interpolación 2D y 3D.C0
"nearest"Interpolación del vecino más cercano basada en triangulación que admite interpolación 2D y 3D.Discontinua
"natural"Interpolación del vecino natural basada en triangulación que admite interpolación 2D y 3D. Este método es una compensación eficiente entre los métodos linear y cubic.C1 excepto en los puntos de muestra
"cubic"Interpolación cúbica basada en triangulación que solo admite interpolación 2D.C2
"v4"

Interpolación por splines biarmónicos (método 4 griddata de MATLAB®) que solo admite interpolación 2D. A diferencia de los demás métodos, esta interpolación no se basa en una triangulación.

C2

Tipos de datos: char | string

Argumentos de salida

contraer todo

Valores interpolados, devueltos como vector o arreglo. El tamaño de vq depende del tamaño de las entradas de los puntos de consulta xq, yq y zq:

  • En el caso de la interpolación 2D, en la que xq e yq especifican una cuadrícula de puntos de consulta de m por n, vq es un arreglo de m por n.

  • En el caso de la interpolación 3D, donde xq, yq y zq especifican una cuadrícula de puntos de consulta de m por n por p, vq es un arreglo de m por n por p.

  • Si xq, yq (y zq en el caso de la interpolación 3D) son vectores que especifican puntos dispersos, vq es un vector de la misma longitud.

En el caso de los métodos de interpolación distintos de "v4", la salida vq contiene valores NaN para puntos de consulta fuera de la envolvente convexa de los datos de muestra. El método "v4" realiza el mismo cálculo para todos los puntos independientemente de la ubicación.

Coordenadas de cuadrícula para los puntos de consulta, devueltas como vectores o matrices. La forma de Xq e Yq depende de cómo especifique xq e yq:

  • Si especifica xq como vector fila e yq como vector columna, griddata utilizará esos vectores de cuadrícula para formar una cuadrícula completa con [Xq,Yq] = meshgrid(xq,yq). En este caso, las salidas Xq e Yq se devuelven como matrices que contienen las coordenadas de cuadrícula completas para los puntos de consulta.

  • Si xq e yq son ambos vectores fila o vectores columna, Xq = xq e Yq = yq.

Sugerencias

  • La interpolación de datos dispersos con griddata utiliza una triangulación de Delaunay de los datos, por lo que puede ser sensible a problemas de escalado en x, y y z. Cuando esto ocurre, puede utilizar normalize para reescalar los datos y mejorar los resultados. Para obtener más información, consulte Normalize Data with Differing Magnitudes.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a