Explicación intuitiva de la correlación cruzada en el dominio de frecuencia.

13

Según el teorema de correlación cruzada: la correlación cruzada entre dos señales es igual al producto de la transformada de Fourier de una señal multiplicada por el conjugado complejo de la transformada de Fourier de otra señal. Después de hacer esto, cuando tomamos el ifft de la señal del producto, obtenemos un pico que indica el cambio entre dos señales.

¿No puedo entender cómo funciona esto? ¿Por qué obtendría un pico que indica el cambio entre dos señales? Obtuve las matemáticas de: http://mathworld.wolfram.com/Cross-CorrelationTheorem.html pero no puedo entender lo que esto significa intuitivamente. ¿Alguien puede dar alguna explicación o señalarme los documentos correctos?

¡Gracias!

Surfista de plata
fuente
Gracias Dilip Entiendo que obtendré múltiples picos. ¿Qué indica cada uno de este pico? ¿Y por qué obtendrías múltiples picos cuando tomas el ifft? He leído pruebas matemáticas sobre el teorema de correlación cruzada pero no entiendo cómo interpretarlo. Más bien, ¿qué indicaría multiplicar FT de una señal con conjugado de otra? ¿Cuál es el significado físico de esto?
surfista de plata el
El código no funciona. El código termina con algún error como el índice excede la dimensión de la matriz a pesar de que x e y se dieron como 100 y l = 50
Athira

Respuestas:

11

x(t)y(t)X(f)Y(f)

F{x(t)y(t)}=F{x(t)}F{y(t)}

Puede leer más sobre la derivación de este teorema en el enlace de Wikipedia anterior. Ahora, la convolución es una operación muy importante para los sistemas lineales en sí misma, por lo que la teoría sobre sus propiedades está bien desarrollada.

x(t)y(t)

En su ejemplo, está calculando lo siguiente:

F{x(t)}(F{y(t)})

Recuerde que en el dominio de Fourier, la conjugación compleja es equivalente a la inversión de tiempo en el dominio de tiempo (esto se deduce directamente de la definición de la transformada de Fourier). Por lo tanto, usando la primera ecuación dada anteriormente, podemos afirmar que:

F{x(t)y(t)}=F{x(t)}(F{y(t)})

x(t)y(t)

Jason R
fuente
-1
% Matlab function for frequency domain cross correlation
function [Lag,C]=xcorrf(X,Y,L)
% X, Y ---> Input vectors 
% L --->  maximum lag (must be less than minimum of (length of X, Y)
% C ---> correlation vector
% Lag ---> lag times  
X=X(:);
Y=Y(:);
s1=size(X);
s2=size(Y);
D=min(s1(1,1),s2(1,1));
for i=1:L
    X1=ifft(fft(X(1:D-i,:)).*conj(fft(Y(i+1:D,1))));
    C(i,1)=X1(1,1);
end

C=flipud(C);
X1=ifft(fft(X(1:D,:)).*conj(fft(Y(1:D,1))));
C(L+1,1)=X1(1,1);
for i=1:L
    X1=ifft(fft(Y(1:D-i,:)).*conj(fft(X(i+1:D,1))));
    C(i+L+1,1)=X1(1,1);
end
Lag=-L:1:L;
end
rajesh rekapalli
fuente
3
¿Puede editar su respuesta con un poco más de información sobre cómo se supone que el código debe responder a la pregunta del póster original?
A_A
1
Creo que veo a dónde va con este código, pero tengo que decir que si ejecutó este código con cualquier vector X e Y de más de 100 muestras de longitud, tendría que preparar una taza de té mientras espera.
crowie
2
El código solo no es una respuesta
tobassist