interp2
Interpolación para datos de malla 2D en formato meshgrid
Sintaxis
Descripción
devuelve valores interpolados de una función de dos variables en puntos de consulta específicos utilizando la interpolación lineal. Los resultados siempre pasan por el muestreo original de la función. Vq = interp2(X,Y,V,Xq,Yq)X e Y contienen las coordenadas de los puntos de muestra. V contiene los valores de función correspondientes en cada punto de muestra. Xq e Yq contienen las coordenadas de los puntos de consulta.
asume una cuadrícula predeterminada de puntos de muestra. Los puntos de la cuadrícula predeterminada abarcan la región rectangular, Vq = interp2(V,Xq,Yq)X=1:n e Y=1:m, donde [m,n] = size(V). Utilice esta sintaxis cuando desee conservar memoria y no le preocupen las distancias absolutas entre puntos.
también especifica Vq = interp2(___,method,extrapval)extrapval, un valor escalar que se asigna a todas las consultas que quedan fuera del dominio de los puntos de muestra.
Si omite el argumento extrapval para consultas fuera del dominio de los puntos de muestra, en función del argumento method, interp2 devuelve uno de los siguientes valores:
Valores extrapolados para los métodos
'spline'y'makima'.Valores
NaNpara otros métodos de interpolación.
Ejemplos
Muestree de forma imprecisa la función peaks.
[X,Y] = meshgrid(-3:3); V = peaks(X,Y);
Represente el muestreo impreciso.
figure
surf(X,Y,V)
title('Original Sampling');
Cree la cuadrícula de consulta con un espaciado de 0,25.
[Xq,Yq] = meshgrid(-3:0.25:3);
Interpole en los puntos de consulta.
Vq = interp2(X,Y,V,Xq,Yq);
Represente el resultado.
figure
surf(Xq,Yq,Vq);
title('Linear Interpolation Using Finer Grid');
Muestree de forma imprecisa la función peaks.
[X,Y] = meshgrid(-3:3); V = peaks(7);
Represente el muestreo impreciso.
figure
surf(X,Y,V)
title('Original Sampling');
Cree la cuadrícula de consulta con un espaciado de 0,25.
[Xq,Yq] = meshgrid(-3:0.25:3);
Interpole en los puntos de consulta y especifique la interpolación cúbica.
Vq = interp2(X,Y,V,Xq,Yq,'cubic');Represente el resultado.
figure
surf(Xq,Yq,Vq);
title('Cubic Interpolation Over Finer Grid');
Cargue datos de imagen en el área de trabajo.
load flujet.mat colormap gray
Aísle una pequeña región de la imagen y pásela a precisión simple.
V = single(X(200:300,1:25));
Muestre la región de la imagen.
imagesc(V); axis off title('Original Image')

Inserte los valores interpolados dividiendo repetidamente los intervalos entre puntos de la cuadrícula más fina cinco veces en cada dimensión.
Vq = interp2(V,5);
Muestre el resultado.
imagesc(Vq); axis off title('Linear Interpolation')

Muestree de forma imprecisa una función en el intervalo [-2, 2] en ambas dimensiones.
[X,Y] = meshgrid(-2:0.75:2); R = sqrt(X.^2 + Y.^2)+ eps; V = sin(R)./(R);
Represente el muestreo impreciso.
figure
surf(X,Y,V)
xlim([-4 4])
ylim([-4 4])
title('Original Sampling')
Cree la cuadrícula de consulta que se extiende más allá del dominio de X e Y.
[Xq,Yq] = meshgrid(-3:0.2:3);
Realice una interpolación cúbica dentro del dominio de X e Y, y asigne todas las consultas que queden fuera de cero.
Vq = interp2(X,Y,V,Xq,Yq,'cubic',0);Represente el resultado.
figure
surf(Xq,Yq,Vq)
title('Cubic Interpolation with Vq=0 Outside Domain of X and Y');
Argumentos de entrada
Puntos de cuadrícula de muestra, especificados como vectores o matrices reales. Los puntos de cuadrícula de muestra deben ser únicos.
Si
XeYson matrices, contienen las coordenadas de una cuadrícula completa (en formato meshgrid). Use la funciónmeshgridpara crear las matricesXeYjuntas. Ambas matrices deben ser del mismo tamaño.Si
XeYson vectores, se tratan como vectores de cuadrícula. Los valores de ambos vectores deben ser estrictamente monotónicos, bien ascendentes o descendentes.
Ejemplo: [X,Y] = meshgrid(1:30,-10:10)
Tipos de datos: single | double
Valores de muestra, especificados como matriz real o compleja. Los requisitos de tamaño de V dependen del tamaño de X e Y:
Si
XeYson matrices que representan una cuadrícula completa (en formatomeshgrid),Vdebe tener el mismo tamaño queXeY.Si
XeYson vectores de cuadrícula,Vdebe ser una matriz que contengalength(Y)filas ylength(X)columnas.
Si V contiene números complejos, la función interp2 interpola las partes reales y las imaginarias de forma independiente.
Ejemplo: rand(10,10)
Tipos de datos: single | double
Soporte de números complejos: Sí
Puntos de consulta, especificados como escalares, vectores, matrices o arreglos reales.
Si
XqeYqson escalares, son las coordenadas de un único punto de consulta.Si
XqeYqson vectores de diferentes orientaciones,XqeYqse tratan como vectores de cuadrícula.Si
XqeYqson vectores del mismo tamaño y orientación,XqeYqse tratan como puntos dispersos en espacio 2D.Si
XqeYqson matrices, representan o una cuadrícula completa de puntos de consulta (en formatomeshgrid) o puntos dispersos.Si
XqeYqson arreglos ND, representan puntos dispersos en espacio 2D.
Ejemplo: [Xq,Yq] = meshgrid((1:0.1:10),(-5:0.1:0))
Tipos de datos: single | double
Factor de refinamiento, especificado como escalar entero real no negativo. Este valor especifica el número de veces que se deben dividir repetidamente los intervalos de la cuadrícula más fina en cada dimensión. Esto da como resultado 2^k-1 puntos interpolados entre los valores de muestra.
Si k es 0, Vq es igual que V.
interp2(V,1) es lo mismo que interp2(V).
La siguiente ilustración muestra la colocación de valores interpolados (en rojo) en nueve valores de muestra (en negro) para k=2.

Ejemplo: interp2(V,2)
Tipos de datos: single | double
Método de interpolación, especificado como una de las opciones de esta tabla.
| Método | Descripción | Continuidad | Comentarios |
|---|---|---|---|
'linear' | El valor interpolado en un punto de consulta se basa en la interpolación lineal de los valores en los puntos de cuadrícula vecinos de cada dimensión respectiva. Este es el método de interpolación predeterminado. | C0 |
|
'nearest' | El valor interpolado en un punto de consulta es el valor en el punto de cuadrícula de muestra más cercano. | Discontinua |
|
'cubic' | El valor interpolado en un punto de consulta se basa en la interpolación cúbica de los valores en los puntos de cuadrícula vecinos de cada dimensión respectiva. La interpolación se basa en una convolución cúbica | C1 |
|
'makima' | Interpolación cúbica de Hermite con Akima modificada. El valor interpolado en un punto de consulta se basa en una función por tramos de polinomios con grado tres como máximo evaluada con los valores de los puntos de cuadrícula vecinos en cada dimensión respectiva. La fórmula de Akima se modifica para evitar rebasamientos. | C1 |
|
'spline' | El valor interpolado en un punto de consulta se basa en la interpolación cúbica de los valores en los puntos de cuadrícula vecinos de cada dimensión respectiva. La interpolación se basa en un spline cúbico usando condiciones finales not-a-knot. | C2 |
|
Valor de función fuera del dominio de X e Y, especificado como escalar real o complejo. interp2 devuelve este valor constante para todos los puntos fuera del dominio de X e Y.
Ejemplo: 5
Ejemplo: 5+1i
Tipos de datos: single | double
Soporte de números complejos: Sí
Argumentos de salida
Valores interpolados, devueltos como escalar, vector o matriz real o complejo. La forma y el tamaño de Vq dependen de la sintaxis utilizada y, en algunos casos, del tamaño y el valor de los argumentos de entrada.
| Sintaxis | Condiciones especiales | Tamaño de Vq | Ejemplo |
|---|---|---|---|
interp2(X,Y,V,Xq,Yq)interp2(V,Xq,Yq)y variaciones de estas sintaxis que incluyen method o extrapval | Xq, Yq son escalares | Escalar | size(Vq) = [1 1] cuando pasa Xq e Yq como escalares. |
| Igual que la anterior | Xq, Yq son vectores del mismo tamaño y orientación | Vector del mismo tamaño y orientación que Xq e Yq | Si size(Xq) = [100 1]y size(Yq) = [100 1], size(Vq) = [100 1]. |
| Igual que la anterior | Xq, Yq son vectores de varias orientaciones | Matriz en la que el número de filas es length(Yq) y el número de columnas es length(Xq) | Si size(Xq) = [1 100]y size(Yq) = [50 1], size(Vq) = [50 100]. |
| Igual que la anterior | Xq, Yq son matrices o arreglos del mismo tamaño | Matriz o arreglo del mismo tamaño que Xq e Yq | Si size(Xq) = [50 25]y size(Yq) = [50 25], size(Vq) = [50 25]. |
interp2(V,k)y variaciones de esta sintaxis que incluyen method o extrapval | Ninguna | Matriz en la que el número de filas es: | Si size(V) = [10 20]y k = 2, size(Vq) = [37 77]. |
Más acerca de
Un conjunto de valores que son siempre ascendentes o descendentes, sin inversiones. Por ejemplo, la secuencia a = [2 4 6 8] es estrictamente monotónica y ascendente. La secuencia b = [2 4 4 6 8] no es estrictamente monotónica porque no hay un cambio de valor entre b(2) y b(3). La secuencia c = [2 4 6 8 6] contiene una inversión entre c(4) y c(5), por lo que no es en absoluto monotónica.
Para interp2, la cuadrícula completa es un par de matrices cuyos elementos representan una cuadrícula de puntos sobre una región rectangular. Una matriz contiene las coordenadas de x y la otra matriz, las de y. Los valores de la matriz x son estrictamente monotónicos y ascendentes en las filas. Los valores de las columnas son constantes. Los valores de la matriz y son estrictamente monotónicos y ascendentes en las columnas. Los valores de las filas son constantes. Utilice la función meshgrid para crear una cuadrícula completa que se pueda pasar a interp2.
Por ejemplo, el siguiente código crea una cuadrícula completa para la región, –1 ≤ x ≤ 3 y 1 ≤ y ≤ 4:
[X,Y] = meshgrid(-1:3,(1:4))
X =
-1 0 1 2 3
-1 0 1 2 3
-1 0 1 2 3
-1 0 1 2 3
Y =
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4Los vectores de cuadrícula tienen un formato más compacto para representar una cuadrícula que para la cuadrícula completa. La relación entre los dos formatos y la matriz de valores de muestra V es

Para interp2, los vectores de cuadrícula constan de un par de vectores que definen las coordenadas x e y en una cuadrícula. El vector fila define las coordenadas x y el vector columna define las coordenadas y.

Por ejemplo, el siguiente código crea los vectores de cuadrícula que especifican la región, –1 ≤ x ≤ 3 y 1 ≤ y ≤ 4:
x = -1:3; y = (1:4)';
Para interp2, los puntos dispersos consisten en un par de arreglos que definen una colección de puntos dispersos en espacio 2D. Un arreglo contiene las coordenadas x y el otro, las y.
Por ejemplo, el siguiente código especifica los puntos (2,7), (5,3), (4,1) y (10,9):
x = [2 5; 4 10]; y = [7 3; 1 9];
Capacidades ampliadas
Notas y limitaciones de uso:
XqyYqdeben ser del mismo tamaño. Utilicemeshgridpara evaluar en una cuadrícula.Para obtener los mejores resultados, proporcione
XeYcomo vectores. Los valores de estos vectores deben ser estrictamente monotónicos y ascendentes.La generación de código no es compatible con el método de interpolación
'makima'.Para el método de interpolación
'cubic', si la cuadrícula no tiene espaciado uniforme, se produce un error. En este caso, utilice el método de interpolación'spline'.Para obtener los mejores resultados al utilizar el método de interpolación
'spline':Utilice
meshgridpara crear las entradasXqeYq.Utilice un número pequeño de puntos de interpolación en relación a las dimensiones de
V. La interpolación en un conjunto grande de puntos dispersos puede resultar ineficiente.
Notas y limitaciones de uso:
XqyYqdeben ser del mismo tamaño. Utilicemeshgridpara evaluar en una cuadrícula.Para obtener los mejores resultados, proporcione
XeYcomo vectores. Los valores de estos vectores deben ser estrictamente monotónicos y ascendentes.La generación de código no es compatible con el método de interpolación
'makima'.Para el método de interpolación
'cubic', si la cuadrícula no tiene espaciado uniforme, se produce un error. En este caso, utilice el método de interpolación'spline'.Para obtener los mejores resultados al utilizar el método de interpolación
'spline':Utilice
meshgridpara crear las entradasXqeYq.Utilice un número pequeño de puntos de interpolación en relación a las dimensiones de
V. La interpolación en un conjunto grande de puntos dispersos puede resultar ineficiente.
Esta función es totalmente compatible con entornos basados en subprocesos. Para obtener más información, consulte Ejecutar funciones de MATLAB en entornos basados en subprocesos.
La función interp2 es compatible con entradas de arreglos de GPU con estas notas y limitaciones de uso:
Vdebe ser un arreglo 2D simple o doble.Vpuede ser real o complejo.Vno puede ser un vector.XeYdeben:Tener el mismo tipo (simple o doble).
Ser vectores finitos o arreglos 2D con elementos ascendentes y que no se repitan en las dimensiones correspondientes.
Alinearse con ejes cartesianos cuando
XeYson arreglos 2D que no son vectores (como si estuvieran producidos pormeshgrid).Tener dimensiones consistentes con
V.
XqeYqdeben ser vectores o arreglos del mismo tipo (simple o doble). SiXqeYqson arreglos, deben tener el mismo tamaño. Si son vectores de diferente longitud, deben tener diferentes orientaciones.methoddebe ser'linear','nearest'o'cubic'.La extrapolación de la entrada fuera de los límites no es compatible.
Para obtener más información, consulte Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Esta función es totalmente compatible con los arreglos distribuidos. Para obtener más información, consulte Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Historial de versiones
Introducido antes de R2006a
Consulte también
griddata | interp1 | interp3 | interpn | meshgrid | griddedInterpolant | scatteredInterpolant
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)