频域互相关的直观解释


13

根据互相关定理:两个信号之间的互相关等于一个信号的傅立叶变换乘以另一信号的傅立叶变换的复共轭的乘积。完成此操作后,当我们乘积信号的ift时,我们得到一个峰值,该峰值指示两个信号之间的偏移。

我不明白这是怎么回事?为什么我会得到一个峰值,指示两个信号之间的偏移。我从以下网址获得了数学信息:http : //mathworld.wolfram.com/Cross-CorrelationTheorem.html,但我无法理解这在直觉上是什么意思。有人可以提供一些解释或指向正确的文档吗?

谢谢!


谢谢迪利普。我知道我会遇到多个高峰。这个高峰分别代表什么?为何在进行ifft作业时会出现多个峰?我已经阅读了关于互相关定理的数学证明,但是我不知道如何解释它。更像是将一个信号的FT与另一个信号的共轭相乘会表明什么?它的物理意义是什么?
2015年

该代码无法正常工作。该代码最终会出现一些错误,例如索引超出了矩阵维,即使x和y分别为100和l = 50时
Athira

Answers:


11

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

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

您可以在上面的Wikipedia链接上阅读有关此定理推导的更多信息。现在,卷积本身对于线性系统来说是非常重要的运算,因此关于其性质的理论已经得到很好的发展。

x(t)y(t)

在您的示例中,您正在计算以下内容:

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

回想一下,在傅立叶域中,复共轭等效于时域中的时间反转(这直接来自傅立叶变换的定义)。因此,使用上面给出的第一个方程,我们可以说:

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
您能否用更多有关代码应如何回答原始张贴者问题的信息来编辑您的回答?
A_A

1
我想我知道他在用这段代码去哪里,但是我不得不说,如果您使用长度超过100个样本的任何向量X和Y来运行此代码,那么在等待时就必须喝杯茶。
crowie '17

2
光靠代码是
无法解决的
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.