Explication intuitive de la corrélation croisée dans le domaine fréquentiel


13

Selon le théorème de corrélation croisée: la corrélation croisée entre deux signaux est égale au produit de la transformée de Fourier d'un signal multipliée par le conjugué complexe de la transformée de Fourier d'un autre signal. Après avoir fait cela, lorsque nous prenons la différence du signal du produit, nous obtenons un pic qui indique le décalage entre deux signaux.

Je ne peux pas comprendre comment cela fonctionne? Pourquoi devrais-je obtenir un pic qui indique le décalage entre deux signaux. J'ai obtenu les calculs de: http://mathworld.wolfram.com/Cross-CorrelationTheorem.html mais je ne suis pas en mesure de comprendre ce que cela signifie intuitivement. Quelqu'un peut-il fournir des explications ou me diriger vers les bons documents?

Merci!


Merci Dilip. Je comprends que j'obtiendrai plusieurs pics. Qu'indique chacun de ce pic? Et pourquoi obtiendriez-vous plusieurs pics lorsque vous prenez l'ifft? J'ai lu des preuves mathématiques sur le théorème de corrélation croisée mais je ne comprends pas comment l'interpréter. Plus comme ce qu'indiquerait la multiplication de FT d'un signal avec un conjugué d'un autre? quelle en est la signification physique?
surfeur d'argent

Le code ne fonctionne pas. Le code se termine avec une erreur telle que l'index dépasse la dimension de la matrice même si les x et y ont été donnés comme 100 et l = 50
Athira

Réponses:


11

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

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

Vous pouvez en savoir plus sur la dérivation de ce théorème sur le lien Wikipedia ci-dessus. Maintenant, la convolution est une opération très importante pour les systèmes linéaires en soi, donc la théorie sur ses propriétés est bien développée.

x(t)y(t)

Dans votre exemple, vous calculez les éléments suivants:

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

Rappelons que dans le domaine de Fourier, la conjugaison complexe équivaut à une inversion temporelle dans le domaine temporel (cela découle directement de la définition de la transformée de Fourier). Par conséquent, en utilisant la première équation donnée ci-dessus, nous pouvons affirmer que:

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

x(t)y(t)


-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

3
Pouvez-vous modifier votre réponse avec un peu plus d'informations sur la façon dont le code est censé répondre à la question de l'affiche originale?
A_A

1
Je pense que je vois où il va avec ce code, mais je dois dire que si vous exécutez ce code avec des vecteurs X et Y de plus de 100 échantillons, vous devrez faire une tasse de thé pendant que vous attendez.
crowie

2
Le code seul n'est pas une réponse
Tobassist
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.