3

互相关将用于通过发射已知的宽带信号并将发射信号与通过雷达接收盘接收的输入信号相关来测量与飞机的距离

发送的信号x(n)的长度为N=512,而接收的信号y(n)的长度为N=2048。

y(n)=kx(nd)+w(n);其中“kx(nd)”是 x(n) 延迟了 d 个样本并衰减了因子 k,w(n) 是接收噪声。

我正在尝试编写一个 MATLAB 程序来交叉关联 x(n) 与 y(n) 以确定 d 的值,即样本延迟的数量。如果发送和接收的数据以光速传播,如果要在 50 km 内确定到飞机的距离,精度为 50 m,则还要确定合适的采样频率。

4

4 回答 4

4

最简单的方法是使用“xcorr”函数。这是 matlab 信号处理工具箱的一部分,但应该可用于 GNU Octave此处。我没有检查 octave 脚本是否完全兼容 MATLAB。

您可以将 xcorr 函数用作:

[correlation,lags] = xcorr(x,y);

滞后值可以使用

delay = lags(find(correlation==max(correlation)))

在光速下,信号将以 3 x 10^8 m/s 的速度传播,因此要获得 50m 的分辨率,您的采样频率至少应为 (3e8/50m) = 6MHz。在此采样率下,每个延迟将为 1/6000000 秒。如果将延迟乘以该值,就可以得到信号传输和接收之间的总时间间隔。将这个时间乘以光速来得到你的距离。

于 2011-10-17T01:25:08.510 回答
3

我们可以忽略matlab中的'find'函数,命令可以改为

delay = lags(correlation==max(correlation))

'xcorr' 适用于长度较长的向量;
'gcc' 更喜欢逐帧。

于 2012-11-08T05:45:29.457 回答
3

您可以使用广义互相关 - 相位变换 GCC PHAT 以下是它的 MATLAB 代码

function time=GCCPHAT_testmode(b1,b2)

b1f=fft(b1);

b2f=fft(b2);

b2fc=conj(b2f);

neuma=(b1f).*(b2fc);

deno=abs((b1f).*(b2fc));

GPHAT=neuma./deno;

GPHATi=ifft(GPHAT);

[maxval ind]= max(GPHATi);

samp=ind

end
于 2011-11-02T22:00:50.030 回答
2

上面 Aj463 的评论很好,确实 GCC-PHAT 在估计宽带信号的延迟方面优于未加权相关。

我建议对上面发布的代码进行一些小的改进:为分母 epsilon -> 0 添加一个小的值 epsilon,以避免最终被零除。

因此,我会改变这条线

deno=abs((b1f).*(b2fc));

deno=abs((b1f).*(b2fc)) + epsilon; 
于 2014-08-06T14:32:03.350 回答