Intuitive Erklärung der Kreuzkorrelation im Frequenzbereich


13

Gemäß dem Kreuzkorrelationssatz ist die Kreuzkorrelation zwischen zwei Signalen gleich dem Produkt der Fouriertransformation eines Signals multipliziert mit dem komplexen Konjugat der Fouriertransformation eines anderen Signals. Wenn wir danach den Schuß des Produktsignals nehmen, erhalten wir eine Spitze, die die Verschiebung zwischen zwei Signalen anzeigt.

Ich kann nicht verstehen, wie das funktioniert? Warum sollte ich einen Peak bekommen, der die Verschiebung zwischen zwei Signalen anzeigt? Ich habe die Mathematik von: http://mathworld.wolfram.com/Cross-CorrelationTheorem.html, aber ich kann nicht verstehen, was dies intuitiv bedeutet. Kann mir jemand bitte eine Erklärung geben oder mich auf die richtigen Dokumente hinweisen?

Vielen Dank!


Danke Dilip. Ich verstehe, ich werde mehrere Spitzen bekommen. Was zeigt jeder dieser Spitzenwerte an? Und warum würden Sie mehrere Spitzen bekommen, wenn Sie den Schuß nehmen? Ich habe mathematische Beweise über Kreuzkorrelationssätze gelesen, aber ich verstehe nicht, wie ich sie interpretieren soll. Eher wie würde das Multiplizieren von FT eines Signals mit Konjugat eines anderen anzeigen? Was ist die physikalische Bedeutung davon?
Silver Surfer

Der Code funktioniert nicht. Der Code endet mit einem fehlerhaften Index, der die Matrixdimension überschreitet, obwohl x und y mit 100 und l = 50 angegeben wurden
Athira,

Antworten:


11

Das Konzept basiert auf dem Faltungssatz , der besagt, dass für zwei Signale und y ( t ) das Produkt ihrer Fouriertransformationen X ( f ) und Y ( f ) gleich der Fouriertransformation der Faltung von ist die beiden signale. Das ist:x(t)y(t)X(f)Y.(f)

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

Weitere Informationen zur Ableitung dieses Theorems finden Sie unter dem obigen Wikipedia-Link. Nun ist die Faltung eine sehr wichtige Operation für lineare Systeme an sich, weshalb die Theorie zu ihren Eigenschaften gut entwickelt ist.

Was Sie jedoch suchen, ist die Kreuzkorrelation zwischen und y ( t ) . Hier ist der Schlüssel: Sie das Kreuzkorrelationsintegral entspricht dem Faltungsintegral, wenn eines der Eingangssignale konjugiert und zeitlich umgekehrt ist . Auf diese Weise können Sie die für die Bewertung von Faltungen entwickelte Theorie (wie Frequenzbereichstechniken für deren schnelle Berechnung) verwenden und auf Korrelationen anwenden.x(t)y(t)

In Ihrem Beispiel berechnen Sie Folgendes:

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

Denken Sie daran, dass im Fourier-Bereich die komplexe Konjugation der Zeitumkehr im Zeitbereich entspricht (dies folgt direkt aus der Definition der Fourier-Transformation). Daher können wir unter Verwendung der oben angegebenen ersten Gleichung feststellen, dass:

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
Können Sie bitte Ihre Antwort mit ein bisschen mehr Information darüber bearbeiten, wie der Code die Frage des ursprünglichen Posters beantworten soll?
A_A

1
Ich denke, ich sehe, wohin er mit diesem Code geht, aber ich muss sagen, dass Sie, wenn Sie diesen Code mit Vektoren X und Y über 100 Proben Länge laufen lassen, eine Tasse Tee machen müssten, während Sie warten.
Crowie

2
Code allein ist keine Antwort
tobassist
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.