【发布时间】:2014-02-26 11:16:45
【问题描述】:
我有两个相隔一定距离的传感器,它们接收来自源的信号。纯粹形式的信号是频率为 17kHz 的正弦波。我想估计两个传感器之间的 TDOA。我正在使用互相关,下面是我的代码
x1; % signal as recieved by sensor1
x2; % signal as recieved by sensor2
len = length(x1);
nfft = 2^nextpow2(2*len-1);
X1 = fft(x1);
X2 = fft(x2);
X = X1.*conj(X2);
m = ifft(X);
r = [m(end-len+1) m(1:len)];
[a,i] = max(r);
td = i - length(r)/2;
我通过去除所有低于 17kHz 的频率来过滤我的信号 x1 和 x2。 上面的代码有两个问题: 1.传感器和源在同一个地方,我每次都得到不同的'td'值。我不确定出了什么问题。是因为噪音吗?如果是这样,任何人都可以提供解决方案吗?我已经阅读了很多论文并解决了关于 stackoverflow 的其他问题,所以请用代码和理论来回答,而不是仅仅陈述理论。 2. 'td' 的值有时与使用 xcorr 计算的延迟不匹配。我究竟做错了什么?下面是我使用 xcorr 的 td 代码
[xc,lags] = xcorr(x1,x2);
[m,i] = max(xc);
td = lags(i);
【问题讨论】:
-
TDOA:到达时间差
-
如果你有通讯工具箱,你可以使用函数
finddelay。 -
我正在使用 fft 通过代码寻找解决方案
标签: matlab fft cross-correlation