首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在尝试编写一个代码,将发送的信号与接收的信号相互关联,以确定采样延迟的数量

我正在尝试编写一个代码,将发送的信号与接收的信号相互关联,以确定采样延迟的数量
EN

Stack Overflow用户
提问于 2011-10-17 07:10:53
回答 4查看 6.5K关注 0票数 3

互相关被用来测量到航空器的距离,方法是发射一个已知的宽带信号,并将发射的信号与通过雷达接收盘接收的输入信号进行相关。

发送信号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的精度,假设发送和接收的数据是以光速行进的。

EN

回答 4

Stack Overflow用户

发布于 2011-10-17 09:25:09

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

您可以像这样使用xcorr函数:

代码语言:javascript
复制
[correlation,lags] = xcorr(x,y);

可以使用以下命令找到LAG值

代码语言:javascript
复制
delay = lags(find(correlation==max(correlation)))

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

票数 4
EN

Stack Overflow用户

发布于 2011-11-03 06:00:50

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

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2012-11-08 13:45:29

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

代码语言:javascript
复制
delay = lags(correlation==max(correlation))

‘'xcorr’适用于长度较长的向量;

“‘gcc”首选逐帧显示。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7788005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档