Fast Average Square Difference Function (ASDF) 求time delay

在噪音比较小的情况下, 可以使用ASDF来求两个信号之间的delay1.
常规的ASDF算法是写循环来求, 代码如下:

for i=1:N
ASDF(i)=sum((x1-circshift(x2,i-1)).^2)/N;
end

展开之后可以看到等价于

for i = 1:N
    asdf(i) = (sum(x1.^2) - 2*sum(x1*circshift(x2,i-1)) + sum(x2.^2))/N;
end

我们知道循环是非常耗时的, 所以可以使用FFT来加速运算, 因为里面包含了一个correlationsum(x1*circshift(x2,i-1))2:

asdf = (-2*ifft(fft(x1).*conj(fft(x2))) + sum(x1.^2) + sum(x2.^2))/N;

  1. Discrete Time Techniques for Time Delay Estimation ↩︎

  2. Fast Average Square Difference Function ↩︎

你可能感兴趣的:(Research)