Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

xcorr

Correlación cruzada

Descripción

ejemplo

r = xcorr(x,y) devuelve la correlación cruzada de dos secuencias de tiempo diferenciado. La correlación cruzada mide la similitud entre un vector x y las copias desplazadas (desfasadas) de un vector y como función del desfase. Si x e y tienen longitudes diferentes, la función añade ceros al final del vector más corto para que tenga la misma longitud que el otro.

ejemplo

r = xcorr(x) devuelve la secuencia de autocorrelación de x. Si x es una matriz, r es una matriz cuyas columnas contienen las secuencias de autocorrelación y de correlación cruzada para todas las combinaciones de las columnas de x.

ejemplo

r = xcorr(___,maxlag) limita el rango de desfase de -maxlag a maxlag para cualquiera de las sintaxis anteriores.

ejemplo

r = xcorr(___,scaleopt) también especifica una opción de normalización para la correlación cruzada o la autocorrelación. Cualquier opción que no sea 'none' (la opción predeterminada) requiere que x e y tengan la misma longitud.

ejemplo

[r,lags] = xcorr(___) también devuelve los desfases en los que se calculan las correlaciones.

Ejemplos

contraer todo

Cree un vector x y un vector y que sea igual a x desplazado 5 elementos a la derecha. Calcule y represente la correlación cruzada estimada de x e y. El mayor pico se produce en el valor de desfase cuando los elementos de x e y coinciden exactamente (-5).

n = 0:15;
x = 0.84.^n;
y = circshift(x,5);
[c,lags] = xcorr(x,y);
stem(lags,c)

Figure contains an axes. The axes contains an object of type stem.

Calcule y represente la autocorrelación estimada de un vector x. El mayor pico se produce en el desfase cero, cuando x coincide exactamente consigo mismo.

n = 0:15;
x = 0.84.^n;
[c,lags] = xcorr(x);
stem(lags,c)

Figure contains an axes. The axes contains an object of type stem.

Calcule y represente la correlación cruzada normalizada de los vectores x e y con un pico de unidad y especifique un desfase máximo de 10.

n = 0:15;
x = 0.84.^n;
y = circshift(x,5);
[c,lags] = xcorr(x,y,10,'normalized');
stem(lags,c)

Figure contains an axes. The axes contains an object of type stem.

Argumentos de entrada

contraer todo

Arreglo de entrada, especificado como vector, matriz o arreglo multidimensional. Si x es un arreglo multidimensional, xcorr opera por columnas en todas las dimensiones y devuelve cada autocorrelación y correlación cruzada como las columnas de una matriz.

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

Arreglo de entrada, especificado como vector.

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

Desfase máximo, especificado como escalar entero. Si se especifica maxlag, la secuencia de correlación cruzada que se devuelve oscila entre -maxlag y maxlag. Si no se especifica maxlag, el rango de desfase es igual a 2N – 1, donde N es la mayor de las longitudes de x e y.

Tipos de datos: single | double

Opción de normalización, especificada como una de las siguientes opciones.

  • 'none': correlación cruzada sin procesar ni escalar. 'none' es la única opción válida cuando x e y tienen longitudes diferentes.

  • 'biased': estimación sesgada de la correlación cruzada:

    R^xy,biased(m)=1NR^xy(m).

  • 'unbiased': estimación no sesgada de la correlación cruzada:

    R^xy,unbiased(m)=1N|m|R^xy(m).

  • 'normalized' o 'coeff': normaliza la secuencia para que las autocorrelaciones en el desfase cero sean iguales a 1:

    R^xy,coeff(m)=1R^xx(0)R^yy(0)R^xy(m).

Argumentos de salida

contraer todo

Correlación cruzada o autocorrelación, devuelta como vector o matriz.

Si x es una matriz M × N, xcorr(x) devuelve una matriz (2M – 1) × N2 con las autocorrelaciones y correlaciones cruzadas de las columnas de x. Si especifica maxlag, r tiene el tamaño (2 × maxlag + 1) × N2.

Por ejemplo, si S tiene tres columnas, S=(x1x2x3), el resultado de R = xcorr(S) se organiza como

R=(Rx1x1Rx1x2Rx1x3Rx2x1Rx2x2Rx2x3Rx3x1Rx3x2Rx3x3).

Índices de desfase, devueltos como vector.

Más acerca de

contraer todo

Correlación cruzada y autocorrelación

El resultado de xcorr puede interpretarse como una estimación de la correlación entre dos secuencias aleatorias o como la correlación determinista entre dos señales deterministas.

La verdadera secuencia de correlación cruzada de dos procesos aleatorios conjuntamente estacionarios, xn e yn, viene dada por

Rxy(m)=E{xn+myn*}=E{xnynm*},

donde < n < , el asterisco denota una conjugación compleja y E es el operador de valor esperado. xcorr solo puede estimar la secuencia, porque, en la práctica, solo se dispone de un segmento finito de una realización del proceso aleatorio de longitud infinita.

De forma predeterminada, xcorr calcula las correlaciones sin procesar ni normalizar:

R^xy(m)={n=0Nm1xn+myn,m0,R^yx*(m),m<0.

El vector de salida, c, tiene los elementos dados por

c(m)=R^xy(mN),m=1,2,,2N1.

En general, la función de correlación requiere una normalización para producir una estimación precisa. Puede controlar la normalización de la correlación con el argumento de entrada scaleopt.

Referencias

[1] Buck, John R., Michael M. Daniel, and Andrew C. Singer. Computer Explorations in Signals and Systems Using MATLAB®. 2nd Edition. Upper Saddle River, NJ: Prentice Hall, 2002.

[2] Stoica, Petre, and Randolph Moses. Spectral Analysis of Signals. Upper Saddle River, NJ: Prentice Hall, 2005.

Capacidades ampliadas

Consulte también

| | |