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
NaN
para 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
X
eY
son matrices, contienen las coordenadas de una cuadrícula completa (en formato meshgrid). Use la funciónmeshgrid
para crear las matricesX
eY
juntas. Ambas matrices deben ser del mismo tamaño.Si
X
eY
son 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
X
eY
son matrices que representan una cuadrícula completa (en formatomeshgrid
),V
debe tener el mismo tamaño queX
eY
.Si
X
eY
son vectores de cuadrícula,V
debe 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
Xq
eYq
son escalares, son las coordenadas de un único punto de consulta.Si
Xq
eYq
son vectores de diferentes orientaciones,Xq
eYq
se tratan como vectores de cuadrícula.Si
Xq
eYq
son vectores del mismo tamaño y orientación,Xq
eYq
se tratan como puntos dispersos en espacio 2D.Si
Xq
eYq
son matrices, representan o una cuadrícula completa de puntos de consulta (en formatomeshgrid
) o puntos dispersos.Si
Xq
eYq
son 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 4
Los 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:
Xq
yYq
deben ser del mismo tamaño. Utilicemeshgrid
para evaluar en una cuadrícula.Para obtener los mejores resultados, proporcione
X
eY
como 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
meshgrid
para crear las entradasXq
eYq
.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:
Xq
yYq
deben ser del mismo tamaño. Utilicemeshgrid
para evaluar en una cuadrícula.Para obtener los mejores resultados, proporcione
X
eY
como 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
meshgrid
para crear las entradasXq
eYq
.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:
V
debe ser un arreglo 2D simple o doble.V
puede ser real o complejo.V
no puede ser un vector.X
eY
deben: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
X
eY
son arreglos 2D que no son vectores (como si estuvieran producidos pormeshgrid
).Tener dimensiones consistentes con
V
.
Xq
eYq
deben ser vectores o arreglos del mismo tipo (simple o doble). SiXq
eYq
son arreglos, deben tener el mismo tamaño. Si son vectores de diferente longitud, deben tener diferentes orientaciones.method
debe 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)