Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

interp1

Interpolación de datos 1D (búsqueda de tabla)

Descripción

ejemplo

vq = interp1(x,v,xq) devuelve los valores interpolados de una función 1D en puntos de consulta específicos mediante interpolación lineal. El vector x contiene los puntos de muestra y v contiene los valores correspondientes, v(x). El vector xq contiene las coordenadas de los puntos de consulta.

Si tiene varios conjuntos de datos muestreados en las mismas coordenadas de punto, puede pasar v como un array. Cada columna del array v contiene un conjunto diferente de valores de muestra 1D.

ejemplo

vq = interp1(x,v,xq,method) especifica un método de interpolación alternativo: 'nearest', 'next', 'previous', 'linear', 'spline', 'pchip', 'makima' o 'cubic'. El método predeterminado es 'linear'.

ejemplo

vq = interp1(x,v,xq,method,extrapolation) especifica una estrategia para evaluar puntos que se encuentran fuera del dominio de x. Establezca extrapolation como 'extrap' cuando desee utilizar el algoritmo method para la extrapolación. Como alternativa, puede especificar un valor escalar, en cuyo caso interp1 devuelve ese valor para todos los puntos fuera del dominio de x.

ejemplo

vq = interp1(v,xq) devuelve valores interpolados y asume un conjunto predeterminado de coordenadas de punto de muestra. Los puntos predeterminados son la secuencia de números de 1 a n, donde n depende de la forma de v:

  • Cuando v es un vector, los puntos predeterminados son 1:length(v).

  • Cuando v es un array, los puntos predeterminados son 1:size(v,1).

Utilice esta sintaxis cuando no le preocupen las distancias absolutas entre los puntos.

vq = interp1(v,xq,method) especifica cualquiera de los métodos de interpolación alternativos y utiliza los puntos de muestra predeterminados.

vq = interp1(v,xq,method,extrapolation) especifica una estrategia de extrapolación y utiliza los puntos de muestra predeterminados.

pp = interp1(x,v,method,'pp') devuelve la forma polinomial por tramos de v(x) mediante el algoritmo method.

Nota

No se recomienda esta sintaxis. En su lugar, utilice griddedInterpolant.

Ejemplos

contraer todo

Defina los puntos de muestra, x y los valores de muestra correspondientes, v.

x = 0:pi/4:2*pi; 
v = sin(x);

Defina los puntos de consulta para que constituyan un muestreo más detallado sobre el rango de x.

xq = 0:pi/16:2*pi;

Interpole la función en los puntos de consulta y trace el resultado.

figure
vq1 = interp1(x,v,xq);
plot(x,v,'o',xq,vq1,':.');
xlim([0 2*pi]);
title('(Default) Linear Interpolation');

A continuación, evalúe v en los mismos puntos utilizando el método 'spline'.

figure
vq2 = interp1(x,v,xq,'spline');
plot(x,v,'o',xq,vq2,':.');
xlim([0 2*pi]);
title('Spline Interpolation');

Defina un conjunto de valores de función.

v = [0  1.41  2  1.41  0  -1.41  -2  -1.41 0];

Defina un conjunto de puntos de consulta que se encuentren entre los puntos predeterminados, 1:9. En este caso, los puntos predeterminados son 1:9 porque v contiene 9 valores.

xq = 1.5:8.5;

Evalúe v en xq.

vq = interp1(v,xq);

Trace el resultado.

figure
plot((1:9),v,'o',xq,vq,'*');
legend('v','vq');

Defina un conjunto de puntos de muestra.

x = 1:10;

Defina los valores de la función, , en los puntos de muestra.

v = (5*x)+(x.^2*1i);

Defina los puntos de consulta para que constituyan un muestreo más detallado sobre el rango de x.

xq = 1:0.25:10;

Interpole v en los puntos de consulta.

vq = interp1(x,v,xq);

Trace la parte real del resultado en rojo y la parte imaginaria en azul.

figure
plot(x,real(v),'*r',xq,real(vq),'-r');
hold on
plot(x,imag(v),'*b',xq,imag(vq),'-b');

Interpole los puntos de datos con marca de tiempo.

Considere un conjunto de datos que contiene lecturas de temperatura que se miden cada cuatro horas. Cree una tabla con los datos de un día y trace los datos.

x = (datetime(2016,1,1):hours(4):datetime(2016,1,2))';
x.Format = 'MMM dd, HH:mm';
T = [31 25 24 41 43 33 31]';
WeatherData = table(x,T,'VariableNames',{'Time','Temperature'})
WeatherData=7×2 table
        Time         Temperature
    _____________    ___________

    Jan 01, 00:00        31     
    Jan 01, 04:00        25     
    Jan 01, 08:00        24     
    Jan 01, 12:00        41     
    Jan 01, 16:00        43     
    Jan 01, 20:00        33     
    Jan 02, 00:00        31     

plot(WeatherData.Time, WeatherData.Temperature, 'o')

Interpole el conjunto de datos para predecir la lectura de la temperatura durante cada minuto del día. Dado que los datos son periódicos, utilice el método de interpolación 'spline'.

xq = (datetime(2016,1,1):minutes(1):datetime(2016,1,2))';
V = interp1(WeatherData.Time, WeatherData.Temperature, xq, 'spline');

Trace los puntos interpolados.

hold on
plot(xq,V,'r')

Defina los puntos de muestra, x y los valores de muestra correspondientes, v.

x = [1 2 3 4 5];
v = [12 16 31 10 6];

Especifique los puntos de consulta, xq, que se extienden más allá del dominio de x.

xq = [0 0.5 1.5 5.5 6];

Evalúe v en xq mediante el método 'pchip'.

vq1 = interp1(x,v,xq,'pchip')
vq1 = 1×5

   19.3684   13.6316   13.2105    7.4800   12.5600

A continuación, evalúe v en xq mediante el método 'linear'.

vq2 = interp1(x,v,xq,'linear')
vq2 = 1×5

   NaN   NaN    14   NaN   NaN

Después, utilice el método 'linear' con la opción 'extrap'.

vq3 = interp1(x,v,xq,'linear','extrap')
vq3 = 1×5

     8    10    14     4     2

'pchip' extrapola de forma predeterminada, pero 'linear' no lo hace.

Defina los puntos de muestra, x y los valores de muestra correspondientes, v.

x = [-3 -2 -1 0 1 2 3];
v = 3*x.^2;

Especifique los puntos de consulta, xq, que se extienden más allá del dominio de x.

xq = [-4 -2.5 -0.5 0.5 2.5 4];

Ahora evalúe v en xq mediante el método 'pchip' y asigne cualquier valor fuera del dominio de x al valor, 27.

vq = interp1(x,v,xq,'pchip',27)
vq = 1×6

   27.0000   18.6562    0.9375    0.9375   18.6562   27.0000

Defina los puntos de muestra.

x = (-5:5)';

Muestree tres funciones parabólicas diferentes en los puntos definidos en x.

v1 = x.^2;
v2 = 2*x.^2 + 2;
v3 = 3*x.^2 + 4;

Cree la matriz v, cuyas columnas son los vectores v1, v2 y v3.

v = [v1 v2 v3];

Defina un conjunto de puntos de consulta, xq, para que se produzca un muestreo más detallado sobre el rango de x.

xq = -5:0.1:5;

Evalúe las tres funciones en xq y trace los resultados.

vq = interp1(x,v,xq,'pchip');
figure
plot(x,v,'o',xq,vq);

h = gca;
h.XTick = -5:5;

Los círculos del gráfico representan v y las líneas continuas representan vq.

Argumentos de entrada

contraer todo

Puntos de muestra, especificados como vector de fila o columna de números reales. Los valores de x deben ser distintos. La longitud de x debe ajustarse a uno de los siguientes requisitos:

  • Si v es un vector, length(x) debe ser igual a length(v).

  • Si v es un array, length(x) debe ser igual a size(v,1).

Ejemplo: [1 2 3 4 5 6 7 8 9 10]

Ejemplo: 1:10

Ejemplo: [3 7 11 15 19 23 27 31]'

Tipos de datos: single | double | duration | datetime

Valores de muestra, especificados como vector, matriz o array de números reales o complejos. Si v es una matriz o un array, cada columna contiene un conjunto independiente de valores 1D.

Si v contiene números complejos, interp1 interpola las partes reales e imaginarias por separado.

Ejemplo: rand(1,10)

Ejemplo: rand(10,1)

Ejemplo: rand(10,3)

Tipos de datos: single | double | duration | datetime
Soporte de números complejos:

Puntos de consulta, especificados como escalar, vector, matriz o array de números reales.

Ejemplo: 5

Ejemplo: 1:0.05:10

Ejemplo: (1:0.05:10)'

Ejemplo: [0 1 2 7.5 10]

Tipos de datos: single | double | duration | datetime

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

Método

Descripción

Continuidad

Comentarios

'linear'

Interpolación lineal. 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

  • Requiere más memoria y tiempo de cálculo que el vecino más cercano

'nearest'

Interpolación de vecino más cercano. El valor interpolado en un punto de consulta es el valor en el punto de cuadrícula de muestra más cercano.

Discontinua

  • Requiere al menos 2 puntos

  • Requisitos de memoria razonables

  • Tiempo de cálculo más rápido

'next'

Interpolación de vecino siguiente. El valor interpolado en un punto de consulta es el valor en el siguiente punto de cuadrícula de muestra.

Discontinua

  • Requiere al menos 2 puntos

  • Los mismos requisitos de memoria y tiempo de cálculo que 'nearest'

'previous'

Interpolación de vecino anterior. El valor interpolado en un punto de consulta es el valor en el punto de cuadrícula de muestra anterior.

Discontinua

  • Requiere al menos 2 puntos

  • Los mismos requisitos de memoria y tiempo de cálculo que 'nearest'

'pchip'

Interpolación cúbica por tramos con conservación de forma. El valor interpolado en un punto de consulta se basa en una interpolación cúbica por tramos con conservación de forma de los valores en los puntos de cuadrícula vecinos.

C1

  • Requiere por lo menos 4 puntos

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

'cubic'

Nota

El comportamiento de interp1(...,'cubic') cambiará en una versión futura. En una versión futura, este método realizará una circunvolución cúbica.

Igual que 'pchip'.

C1

Este método devuelve actualmente el mismo resultado que 'pchip'

'v5cubic'

Circunvolución cúbica utilizada en MATLAB® 5.

C1

Los puntos deben estar uniformemente espaciados. 'cubic' reemplazará 'v5cubic' en una versión futura.

'makima'

Interpolación hermítica cúbica de Akima modificada. El valor interpolado en un punto de consulta se basa en una función por tramos de polinomios con un grado máximo de tres. La fórmula de Akima se modifica para evitar los sobrepasamientos.

C1

  • Requiere al menos 2 puntos

  • Produce menos ondulaciones que 'spline', pero no se aplana tan drásticamente como 'pchip'

  • El cálculo es más costoso que con 'pchip', pero normalmente menos que con 'spline'

  • Los requisitos de memoria son similares a los de 'spline'

'spline'

Interpolación de splines utilizando condiciones finales que no suponen un nudo. El valor interpolado en un punto de consulta se basa en una interpolación cúbica de los valores en los puntos de cuadrícula vecinos de cada dimensión respectiva.

C2

  • Requiere por lo menos 4 puntos

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

En R2017b y versiones posteriores, method también se puede especificar como una cadena mediante comillas dobles. Por ejemplo, "spline".

Estrategia de extrapolación, especificada como 'extrap' o un valor escalar real.

  • Especifique 'extrap' cuando desee que interp1 evalúe los puntos fuera del dominio mediante el mismo método que utiliza para la interpolación.

  • Especifique un valor escalar cuando desee que interp1 devuelva un valor constante específico para los puntos fuera del dominio.

El comportamiento predeterminado depende de los argumentos de entrada:

  • Si especifica los métodos de interpolación 'pchip', 'spline' o 'makima', el comportamiento predeterminado es 'extrap'.

  • Todos los demás métodos de interpolación devuelven NaN de forma predeterminada para los puntos de consulta fuera del dominio.

En R2017b y versiones posteriores, extrapolation también se puede especificar como una cadena mediante comillas dobles. Por ejemplo, "extrap".

Ejemplo: 'extrap'

Ejemplo: 5

Tipos de datos: char | string | single | double

Argumentos de salida

contraer todo

Valores interpolados, devueltos como escalar, vector, matriz o array. El tamaño de vq depende de la forma de v y xq.

Forma de vForma de xqTamaño de VqEjemplo
VectorVectorsize(xq)Si size(v) = [1 100]
y size(xq) = [1 500],
entonces size(vq) = [1 500].
VectorMatriz
o array N-D
size(xq)Si size(v) = [1 100]
y size(xq) = [50 30],
entonces size(vq) = [50 30].
Matriz
o array N-D
Vector[length(xq) size(v,2),...,size(v,n)]Si size(v) = [100 3]
y size(xq) = [1 500],
entonces size(vq) = [500 3].
Matriz
o array N-D
Matriz
o array N-D
[size(xq,1),...,size(xq,n),... size(v,2),...,size(v,m)]Si size(v) = [4 5 6]
y size(xq) = [2 3 7],
entonces size(vq) = [2 3 7 5 6].

Polinomio por tramos, devuelto como estructura que se puede pasar a la función ppval para su evaluación.

Capacidades ampliadas

Consulte también

| | |

Introducido antes de R2006a