Contenido principal

interp2

Interpolación para datos de malla 2D en formato meshgrid

Descripción

Vq = interp2(X,Y,V,Xq,Yq) 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. 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.

ejemplo

Vq = interp2(V,Xq,Yq) asume una cuadrícula predeterminada de puntos de muestra. Los puntos de la cuadrícula predeterminada abarcan la región rectangular, 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.

Vq = interp2(V) devuelve los valores interpolados en una cuadrícula más fina formada dividiendo el intervalo por valores de muestra una vez en cada dimensión.

Vq = interp2(V,k) devuelve los valores interpolados en una cuadrícula más fina formada dividiendo por dos repetidamente los intervalos k veces en cada dimensión. Esto da como resultado 2^k-1 puntos interpolados entre los valores de muestra.

ejemplo

Vq = interp2(___,method) especifica un método de interpolación alternativo: 'linear', 'nearest', 'cubic', 'makima' o 'spline'. El método predeterminado es 'linear'.

ejemplo

Vq = interp2(___,method,extrapval) también especifica 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.

ejemplo

Ejemplos

contraer todo

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');

Figure contains an axes object. The axes object with title Original Sampling contains an object of type surface.

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');

Figure contains an axes object. The axes object with title Linear Interpolation Using Finer Grid contains an object of type surface.

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');

Figure contains an axes object. The axes object with title Original Sampling contains an object of type surface.

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');

Figure contains an axes object. The axes object with title Cubic Interpolation Over Finer Grid contains an object of type surface.

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')

Figure contains an axes object. The hidden axes object with title Original Image contains an object of type 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')

Figure contains an axes object. The hidden axes object with title Linear Interpolation contains an object of type image.

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')

Figure contains an axes object. The axes object with title Original Sampling contains an object of type surface.

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');

Figure contains an axes object. The axes object with title Cubic Interpolation with Vq=0 Outside Domain of X and Y contains an object of type surface.

Argumentos de entrada

contraer todo

Puntos de cuadrícula de muestra, especificados como vectores o matrices reales. Los puntos de cuadrícula de muestra deben ser únicos.

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 e Y son matrices que representan una cuadrícula completa (en formato meshgrid), V debe tener el mismo tamaño que X e Y.

  • Si X e Y son vectores de cuadrícula, V debe ser una matriz que contenga length(Y) filas y length(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:

Puntos de consulta, especificados como escalares, vectores, matrices o arreglos reales.

  • Si Xq e Yq son escalares, son las coordenadas de un único punto de consulta.

  • Si Xq e Yq son vectores de diferentes orientaciones, Xq e Yq se tratan como vectores de cuadrícula.

  • Si Xq e Yq son vectores del mismo tamaño y orientación, Xq e Yq se tratan como puntos dispersos en espacio 2D.

  • Si Xq e Yq son matrices, representan o una cuadrícula completa de puntos de consulta (en formato meshgrid) o puntos dispersos.

  • Si Xq e Yq 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.

Nine sample points in a grid with three interpolated points between the sample points in each dimension

Ejemplo: interp2(V,2)

Tipos de datos: single | double

Método de interpolación, especificado como una de las opciones de esta tabla.

MétodoDescripciónContinuidadComentarios
'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
  • Requiere al menos 2 puntos de cuadrícula en cada dimensión

  • Requiere más memoria que 'nearest'

'nearest'El valor interpolado en un punto de consulta es el valor en el punto de cuadrícula de muestra más cercano. Discontinua
  • Requiere 2 puntos de cuadrícula en cada dimensión

  • El cálculo más rápido con requisitos de memoria moderados

'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úbicaC1
  • La cuadrícula debe tener espaciado uniforme en cada dimensión, pero el espaciado no tiene que ser el mismo para todas las dimensiones

  • Requiere al menos 4 puntos de cuadrícula en cada dimensión

  • Requiere más memoria y tiempo de cálculo que 'linear'

'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
  • Requiere al menos 2 puntos en cada dimensión

  • Genera menos ondulaciones que 'spline'

  • El tiempo de cálculo suele ser menor que 'spline', pero los requisitos de memoria son similares

'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
  • Requiere al menos 4 puntos en cada dimensión y se recurre a la interpolación lineal o cuadrática si se proporcionan 2 o 3 puntos, respectivamente

  • Requiere más memoria y tiempo de cálculo que 'cubic'

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:

Argumentos de salida

contraer todo

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.

SintaxisCondiciones especialesTamaño de VqEjemplo
interp2(X,Y,V,Xq,Yq)
interp2(V,Xq,Yq)
y variaciones de estas sintaxis que incluyen method o extrapval
Xq, Yq son escalaresEscalarsize(Vq) = [1 1] cuando pasa Xq e Yq como escalares.
Igual que la anteriorXq, Yq son vectores del mismo tamaño y orientaciónVector del mismo tamaño y orientación que Xq e YqSi size(Xq) = [100 1]
y size(Yq) = [100 1],
size(Vq) = [100 1].
Igual que la anteriorXq, Yq son vectores de varias orientacionesMatriz 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 anteriorXq, Yq son matrices o arreglos del mismo tamañoMatriz o arreglo del mismo tamaño que Xq e YqSi 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:
2^k * (size(V,1)-1)+1,

y el número de columnas es:
2^k * (size(V,2)-1)+1

Si size(V) = [10 20]
y k = 2,
size(Vq) = [37 77].

Más acerca de

contraer todo

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a