Spiegazione intuitiva della correlazione incrociata nel dominio della frequenza


13

Secondo il teorema della correlazione incrociata: la correlazione incrociata tra due segnali è uguale al prodotto della trasformata di Fourier di un segnale moltiplicata per il coniugato complesso della trasformata di Fourier di un altro segnale. Dopo aver fatto questo, quando prendiamo l'iffo del segnale del prodotto, otteniamo un picco che indica lo spostamento tra due segnali.

Non riesco a capire come funziona? Perché dovrei ottenere un picco che indica lo spostamento tra due segnali. Ho preso la matematica da: http://mathworld.wolfram.com/Cross-CorrelationTheorem.html ma non sono in grado di capire cosa significhi intuitivamente. Qualcuno può fornire qualche spiegazione o indicarmi i documenti giusti?

Grazie!


Grazie Dilip. Capisco che otterrò più picchi. Cosa indica ciascuno di questo picco? E perché dovresti ottenere più picchi quando prendi l'ifft? Ho letto prove matematiche sul teorema di correlazione incrociata ma non capisco come interpretarlo. Più come potrebbe indicare la moltiplicazione di FT di un segnale con il coniugato di un altro? qual è il significato fisico di esso?
surfista d'argento il

Il codice non funziona. Il codice finisce con un errore come l'indice che supera la dimensione della matrice anche se x e y sono stati indicati come 100 e l = 50
Athira,

Risposte:


11

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

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

Puoi leggere di più sulla derivazione di questo teorema al link Wikipedia sopra. Ora, la convoluzione è un'operazione molto importante per i sistemi lineari in sé, quindi la teoria sulle sue proprietà è ben sviluppata.

x(t)y(t)

Nel tuo esempio, stai calcolando quanto segue:

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

Ricordiamo che nel dominio di Fourier, la coniugazione complessa equivale all'inversione del tempo nel dominio del tempo (questo deriva direttamente dalla definizione della trasformata di Fourier). Pertanto, utilizzando la prima equazione di cui sopra, possiamo affermare che:

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

Se poi prendi la trasformata inversa di Fourier di questa equazione, il segnale che ti rimane è la correlazione incrociata tra 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
Potete per favore modificare la vostra risposta con un po 'più di informazioni su come il codice dovrebbe rispondere alla domanda del poster originale?
A_A

1
Penso di vedere dove sta andando con questo codice, ma devo dire che se avessi eseguito questo codice con vettori X e Y di lunghezza superiore a 100 campioni, dovresti preparare una tazza di tè mentre aspetti.
crowie,

2
Il codice da solo non è una risposta
tabacchista
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.