互相关用于通过发射a来测量到飞机的距离 已知的宽带信号并将发射信号与输入信号相关联 通过雷达接待盘接收
发射信号x(n)的长度为N = 512,而接收信号y(n)的长度为N = 2048。
Y(N)= KX(N-d)+ W(N);其中'kx(n-d)'是x(n)延迟d个采样并衰减因子k,w(n)是接收噪声。
我正在尝试编写一个MATLAB程序,将x(n)与y(n)进行交叉关联,以确定d的值,即样本延迟的数量。 并且如果到飞机的距离是确定合适的采样频率 确定在50公里范围内,精度为50米,鉴于传输 接收到的数据正以光速传播。
答案 0 :(得分:4)
最简单的方法是使用“xcorr”功能。这是matlab的信号处理工具箱的一部分,但应该可用于GNU Octave here。我没有检查八度音阶脚本是否完全兼容MATLAB。
您可以将xcorr功能用作:
[correlation,lags] = xcorr(x,y);
可以使用
找到滞后值delay = lags(find(correlation==max(correlation)))
在光速下,信号将以3 x 10 ^ 8 m / s的速度传播,因此要获得50 m的分辨率,您应该至少采样(3e8 / 50m)= 6MHz。在此采样率下,每个延迟将为1/6000000秒。如果将延迟乘以此值,则可获得信号传输和接收之间的总时间间隔。将此时间间隔乘以光速以获得距离。
答案 1 :(得分: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
答案 2 :(得分:3)
我们可以忽略matlab中的'find'函数,命令可以改为
delay = lags(correlation==max(correlation))
'xcorr'适合长度较长的矢量;
'gcc'逐帧优先。
答案 3 :(得分:2)
上面的Aj463评论很好,实际上GCC-PHAT比估计宽带信号延迟的非加权相关性更好。
我建议对上面发布的代码进行一些小改进:在分母中添加一个小值epsilon,epsilon - > 0,以避免最终被零除。
因此,我会更改行
deno=abs((b1f).*(b2fc));
到
deno=abs((b1f).*(b2fc)) + epsilon;