【问题标题】:Time delay estimation using crosscorrelation使用互相关的时间延迟估计
【发布时间】: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


【解决方案1】:

您可能遇到的一个问题是您只使用一个频率。在f = 17 kHz,估计声速v = 340 m/s(我假设您使用超声波),波长为lambda = v / f = 2 cm。这意味着您的长度测量的明确范围为 2 厘米(抱歉,找不到好的链接,请自行 google)。这意味着您需要知道自己的距离不超过 2 厘米,然后才能使用测量结果来优化距离。

换一种方式想一想:当计算两个完美正弦之间的互相关时,结果应该是峰间距等于波长的“梳状”。如果它们完美重叠,并且您将一个信号替换一个波长,它们仍然完美重叠。这意味着您首先必须知道这些峰值中的哪一个是正确的,否则每次纯粹由随机噪声导致不同的峰值可能是最高的。 在尝试盲目地找到最大值之前,您是否绘制了计算出的互相关图?

这个问题与干涉测量法相同,通过测量相位差可以很容易地以小于波长的分辨率测量微小的距离变化,但您不知道绝对距离,因为你不知道绝对相位。

解决这个问题的方法其实很简单:让您的信号源产生更多频率。即使使用(带限)白噪声在计算互相关时也应该没有问题,并且它消除了歧义问题。您应该将白噪声视为正弦的集合。它们中的每一个的互相关都会产生一个梳子,但间距不同。将所有这些梳子加在一起时,它们只会在一个点上显着加起来,这就是您要寻找的延迟!

【讨论】:

  • 我有点困惑。你能解释一下你所说的产生多个频率的解决方案部分吗?假设我将源修改为 source=source+band_limited_noise;现在当我做 xcorr 时,我会得到一个梳子,比如说 2 组牙齿,一个是噪音(这个牙齿很宽,幅度很小),另一个是我的实际波(这个牙齿很窄,幅度很大)。这将如何帮助我找到延迟?当我绘制互相关结果时,我已经得到了这种曲线(是的,我在找到最大值之前绘制它)
  • 我试图将白噪声解释为其傅立叶分量的某种总和,但忘记了这一点。无论如何,白噪声的 xcorr 是一个单峰,如您所愿。理解这个问题的最好方法是在模拟中使用它。只需生成一些白噪声、一些正弦波或组合,然后计算自相关(即零延迟的两个信号)并绘制图。您可能会看到正弦的结果会有多个峰值,而白噪声的结果有一个峰值。
  • 好的。我将频率从 17k 更改为几百赫兹,现在 xcorr 运行良好。我怎样才能使它适用于 17khz?我读了一些论文,但它们对我来说太复杂了。你提到了一些关于源产生更多频率的事情。能详细点吗?
【解决方案2】:

应使用白噪声、最大长度序列或其他非周期信号作为使用互相关进行时间延迟测量的测试信号。这是因为非周期信号只有一个互相关峰值,确定时延不会有歧义。可以使用突发类型的周期性信号来完成这项工作,但会降低 SNR。如果必须使用连续的周期信号作为测试信号,那么只能在周期测试信号的一个周期内测量一个时间延迟。这应该可以解释为什么在您的情况下,使用较低频率的正弦波作为测试信号有效,而使用较高频率的正弦波则不起作用。这在以下视频中得到了展示:https://youtu.be/L6YJqhbsuFYhttps://youtu.be/7u1nSD0RlwY

【讨论】:

    猜你喜欢
    • 2019-04-17
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多