互相关被用来测量到航空器的距离,方法是发射一个已知的宽带信号,并将发射的信号与通过雷达接收盘接收的输入信号进行相关。
发送信号x(n)的长度为N=512,而接收信号y(n)的长度为N=2048。
y(n)=kx(n-d)+ w(n);其中'kx(n-d)‘是延迟了d个样本的x(n),并且衰减了因数k,w(N)是接收噪声。
我正在尝试编写一个MATLAB程序,将x(n)与y(n)进行交叉相关,以确定d的值,即采样延迟的数量。并且还确定适当的采样频率,如果要在50公里内确定到飞机的距离到50m的精度,假设发送和接收的数据是以光速行进的。
发布于 2011-10-17 09:25:09
最简单的方法是使用"xcorr“函数。这是matlab信号处理工具箱的一部分,但应可用于GNU Octave here。我还没有检查八度脚本是否完全兼容MATLAB。
您可以像这样使用xcorr函数:
[correlation,lags] = xcorr(x,y);可以使用以下命令找到LAG值
delay = lags(find(correlation==max(correlation)))在光速下,信号将以3x10^8m/s的速度传播,因此要有50m的分辨率,您应该至少采样(3e8/50m) =6 6MHz。在此采样率下,每个延迟将为1/6000000秒。如果将延迟乘以这个值,就会得到信号发送和接收之间的总时间间隔。将这段时间乘以光速,就可以得到你的距离。
发布于 2011-11-03 06:00:50
你可以使用广义互相关-Phase变换,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发布于 2012-11-08 13:45:29
我们可以忽略matlab中的'find‘函数,命令可以改为
delay = lags(correlation==max(correlation))‘'xcorr’适用于长度较长的向量;
“‘gcc”首选逐帧显示。
https://stackoverflow.com/questions/7788005
复制相似问题