Penjelasan intuitif korelasi silang dalam domain frekuensi


13

Menurut teorema korelasi silang: korelasi silang antara dua sinyal sama dengan produk dari transformasi fourier dari satu sinyal dikalikan dengan konjugat kompleks dari transformasi fourier dari sinyal lain. Setelah melakukan ini, ketika kita mengambil sinyal produk, kita mendapatkan puncak yang mengindikasikan pergeseran antara dua sinyal.

Saya tidak dapat memahami cara kerjanya? Mengapa saya mendapatkan puncak yang menunjukkan pergeseran antara dua sinyal. Saya mendapatkan matematika dari: http://mathworld.wolfram.com/Cross-CorrelationTheorem.html tetapi saya tidak dapat memahami apa artinya ini secara intuitif. Bisakah seseorang memberikan penjelasan atau mengarahkan saya ke dokumen yang benar?

Terima kasih!


Terima kasih dilip. Saya mengerti saya akan mendapatkan beberapa puncak. Apa yang ditunjukkan oleh masing-masing puncak ini? Dan mengapa Anda mendapatkan beberapa puncak saat mengambilnya? Saya telah membaca bukti matematis tentang teorema lintas-korelasi tetapi saya tidak mengerti bagaimana menafsirkannya. Lebih seperti apa yang akan mengalikan FT dari satu sinyal dengan konjugat yang lain menunjukkan? apa signifikansi fisiknya?
peselancar perak

Kode tidak berfungsi. Kode berakhir dengan beberapa kesalahan seperti indeks melebihi dimensi matriks meskipun x dan y diberikan sebagai 100 dan l = 50
Athira

Jawaban:


11

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

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

Anda dapat membaca lebih lanjut tentang derivasi teorema ini di tautan Wikipedia di atas. Sekarang, konvolusi adalah operasi yang sangat penting untuk sistem linear itu sendiri, sehingga teori tentang propertinya berkembang dengan baik.

x(t)y(t)

Dalam contoh Anda, Anda menghitung yang berikut:

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

Ingatlah bahwa dalam domain Fourier, konjugasi kompleks setara dengan pembalikan waktu dalam domain waktu (ini mengikuti langsung dari definisi transformasi Fourier). Oleh karena itu, menggunakan persamaan pertama yang diberikan di atas, kita dapat menyatakan bahwa:

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
Bisakah Anda mengedit respons Anda dengan sedikit informasi lebih lanjut tentang bagaimana kode seharusnya menjawab pertanyaan pengirim asli?
A_A

1
Saya rasa saya melihat ke mana dia akan pergi dengan kode ini, tetapi saya harus mengatakan bahwa jika Anda menjalankan kode ini dengan vektor X dan Y lebih dari 100 sampel, Anda harus membuat secangkir teh sambil menunggu.
crowie

2
Kode saja bukan jawaban
tobassist
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.