Giải thích trực quan về tương quan chéo trong miền tần số


13

Theo định lý tương quan chéo: mối tương quan chéo giữa hai tín hiệu bằng tích của biến đổi Fourier của một tín hiệu nhân với liên hợp phức tạp của biến đổi Fourier của tín hiệu khác. Sau khi thực hiện điều này, khi chúng ta lấy tín hiệu của sản phẩm, chúng ta sẽ đạt được một đỉnh cho biết sự dịch chuyển giữa hai tín hiệu.

Tôi không thể hiểu làm thế nào điều này hoạt động? Tại sao tôi lại nhận được một đỉnh cho biết sự dịch chuyển giữa hai tín hiệu. Tôi đã nhận được toán học từ: http://mathworld.wolfram.com/Cross-CorrelationTheorem.html nhưng tôi không thể hiểu điều này có nghĩa là gì bằng trực giác. Ai đó có thể vui lòng cung cấp một số giải thích hoặc chỉ cho tôi các tài liệu đúng?

Cảm ơn!


Cảm ơn Dilip. Tôi hiểu tôi sẽ nhận được nhiều đỉnh. Mỗi đỉnh này biểu thị điều gì? Và tại sao bạn sẽ nhận được nhiều đỉnh khi bạn tham gia? Tôi đã đọc bằng chứng toán học về định lý tương quan chéo nhưng tôi không hiểu làm thế nào để giải thích nó. Giống như những gì sẽ nhân FT của một tín hiệu với liên hợp của một tín hiệu khác chỉ ra? ý nghĩa vật lý của nó là gì?
người lướt bạc

Mã không hoạt động. Mã kết thúc với một số lỗi như chỉ số vượt quá kích thước ma trận mặc dù x và y được đưa ra là 100 và l = 50
Athira

Câu trả lời:


11

Khái niệm này dựa trên định lý tích chập , trong đó nêu rằng với hai tín hiệu y ( t ) , tích của biến đổi Fourier của chúng X ( f )Y ( f ) bằng với biến đổi Fourier của tích chập Hai tín hiệu. Đó là:x(t)y(t)X(f)Y(f)

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

Bạn có thể đọc thêm về đạo hàm của định lý này tại liên kết Wikipedia ở trên. Bây giờ, tích chập là một hoạt động rất quan trọng đối với các hệ thống tuyến tính, vì vậy lý thuyết về các thuộc tính của nó được phát triển tốt.

x(t)y(t)

Trong ví dụ của bạn, bạn đang tính toán như sau:

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

Hãy nhớ lại rằng trong miền Fourier, liên hợp phức tương đương với đảo ngược thời gian trong miền thời gian (điều này diễn ra trực tiếp từ định nghĩa của biến đổi Fourier). Do đó, sử dụng phương trình đầu tiên được đưa ra ở trên, chúng ta có thể nói rằng:

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
Bạn có thể vui lòng chỉnh sửa câu trả lời của mình với một chút thông tin về cách mã được cho là trả lời câu hỏi của người đăng ban đầu không?
A_A

1
Tôi nghĩ rằng tôi thấy anh ta đang đi đâu với mã này nhưng tôi phải nói rằng nếu bạn chạy mã này với bất kỳ vectơ X và Y nào dài hơn 100 mẫu, bạn sẽ phải pha một tách trà trong khi chờ.
crowie

2
Mã một mình không phải là một câu trả lời
tobassist
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.