Cómo utilizar matlab para implementar autocorrelación y correlación cruzada
Este es un concepto en el análisis de señales. Representan el grado de correlación entre dos series de tiempo, así como el grado de correlación entre los valores de la misma serie de tiempo en dos momentos diferentes. La función de correlación cruzada es Describe el grado de correlación entre los valores de señales aleatorias
x(t) e y(t) en dos momentos diferentes t1 y t2. La función de autocorrelación describe la señal aleatoria. x(t) en dos momentos diferentes. El grado de correlación entre los valores en diferentes momentos t1 y t2
.
La función de autocorrelación describe el grado de correlación entre la señal aleatoria X(t) en dos momentos diferentes t1 y t2; la función de correlación cruzada indica si las dos señales están correlacionadas en el dominio de la frecuencia. un índice de juicio que vincula el espectro cruzado de la señal entre dos puntos de medición con sus respectivos autoespectros. Se puede utilizar para determinar qué parte de la señal de salida proviene de la señal de entrada y es muy eficaz para corregir errores que surgen cuando se realizan mediciones en presencia de fuentes de ruido.
De hecho, en el procesamiento de imágenes, las funciones de autocorrelación y correlación cruzada se definen de la siguiente manera: suponiendo que la función original es f(t), la función de autocorrelación se define como R(u)=f(t ) *f(-t), donde * representa convolución; suponiendo que las dos funciones son f(t) y g(t), la función de correlación cruzada se define como R(u)=f( t)*g(- t), que refleja el grado de coincidencia de las dos funciones en diferentes posiciones relativas.
Entonces, ¿cómo implementar estas dos correlaciones en matlab y mostrarlas en la imagen?
dt=.1;
t=[0:dt:100];
x=cos(t);
[a,b]=xcorr(x,'unbiased');
plot(b*dt,a)
El código anterior resuelve la autocorrelación y dibuja el gráfico.
2. Proceso de implementación:
En Matalb, el proceso de resolución de xcorr en realidad se implementa utilizando el teorema de convolución en la transformada de Fourier, es decir, R(u)=ifft( fft). (f) × fft(g)), donde
× representa la multiplicación. Nota: Esta fórmula solo representa un cálculo formal, no la fórmula utilizada en los cálculos reales. Esta fórmula es un cálculo formal y no la fórmula utilizada en el cálculo real. Por supuesto, también puede utilizar directamente el método de convolución para el cálculo, pero el resultado será diferente de xcorr. De hecho, dado que se garantiza que serán iguales, los resultados deben ser los mismos, pero la fórmula es incorrecta.
Aquí está el código para comprobar si los resultados son los mismos:
dt=.1
t=[0:dt:100]
x; =3*sin (t);
y=cos(3*t);
subtrama(3,1,1);
trama(t ,x);
subtrama(3, 1, 2);
trama(t, y
[a, b]=xcorr(x); , y);
subplot(3, 1, 3);
plot(b*dt, a);
yy=cos(3*fliplr); (t)) ; O utilice: yy=fliplr(y);
z=conv(x, yy
pausa; , 1, 3 );
plot(b*dt,z,'r');
es decir,
3. p>
(1) ¿Cuál es la relación entre el grado de correlación y el valor de la función de correlación?
El coeficiente de correlación es solo una proporción, no una unidad equivalente, no tiene nombre de unidad y no es un porcentaje de correlación. El coeficiente de correlación generalmente se expresa con dos dígitos después del punto decimal. El signo del coeficiente de correlación solo indica la dirección de la correlación y el valor absoluto indica el grado de correlación. Debido a que no es una medida de unidades iguales, no se puede decir que el coeficiente de correlación de 0,7 sea el doble que el de 0,35. Sólo se puede decir que el grado de correlación de las dos columnas de variables con el coeficiente de correlación de 0,7 es más cercano y. mayor que el grado de correlación de las dos columnas de variables con un coeficiente de correlación de 0,35. Tampoco se puede decir que el aumento del coeficiente de correlación de 0,70 a 0,80 sea tan grande como el aumento del coeficiente de correlación de 0,30 a 0,40.
No existe consenso en la comunidad estadística sobre la significancia de la magnitud del coeficiente de correlación, pero los valores habituales son los siguientes:
El grado de correlación de la correlación coeficiente
La microcorrelación es 0,00-±0,30
±0,30-±0,50 Correlación real
±0,50-±0,80 Correlación significativa
± 0,80-±1,00 0,80-±1,00 Alta correlación
(2) ¿Cuál es la diferencia entre el cálculo de matlab de las funciones de autocorrelación autocorr y xcorr?
¿Por qué son diferentes los resultados de usar estas dos funciones para calcular la misma secuencia? Porque xcorr no resta la media al calcular la correlación, mientras que autocorr sí. Además, cuando se utilizan señales discretas para la autocorrelación, la longitud de intercepción de la señal (punto de muestreo N) es diferente y la función de autocorrelación también es diferente.
(3) xcorr es una función de correlación cruzada que calcula los parámetros de opciones:
a=xcorr(x, y, 'option')
option= based es una estimación sesgada de la función de correlación cruzada;
option=unbaised es una estimación insesgada de la función de correlación cruzada
option=unbaised es una estimación insesgada de la cruz; -función de correlación. imparcial es calcular la estimación insesgada de la función de correlación cruzada;
option=coeff es calcular la función de correlación cruzada normalizada, es decir, es el número de correlación cruzada, entre -1 y 1 ;
Option=coeff es calcular la función de correlación cruzada normalizada, es decir, es el número de correlación cruzada, entre -1 y 1;
p>
opción = ninguna es la opción predeterminada.
Si desea calcular el coeficiente de correlación, utilice el parámetro "coeff".
Cuando utilice la función xcorr para operaciones de correlación discreta, tenga en cuenta que cuando xey son vectores desiguales, el vector corto se completará automáticamente con 0 para ser coherente con el vector largo si es una fila. vector o vector columna, el resultado de la operación será el mismo que x.
La operación de correlación utiliza el parámetro coeff para calcular el grado de correlación entre dos conjuntos de datos aleatorios xey. El resultado es un número de correlación entre -1 y 1. De lo contrario, es posible que el resultado no esté necesariamente dentro. este rango puede ser muy grande o muy pequeño, dependiendo del tamaño de los datos x e y. Por lo tanto, generalmente es necesario calcular el grado de correlación entre los dos conjuntos de datos. Generalmente, el parámetro coeficiente es. seleccionado para normalizar los resultados. Normalizar.
La llamada normalización, entendida simplemente, consiste en escalar la secuencia de datos al rango de -1 a 1. Formalmente, es un método para simplificar los cálculos, es decir, transformar expresiones dimensionales. Después de eso, se convierte en una expresión adimensional, un escalar. El valor transformado es X=(X número real-X valor mínimo)/(Xmax-X valor mínimo).
En términos generales, después de seleccionar la normalización para la operación de correlación, cuanto mayor sea el valor absoluto del resultado, mayor será el grado de correlación entre los dos conjuntos de datos.