使用函数finddelay(pulse1,pulse2)
计算here所示的两个脉冲之间的时间延迟,得到8.73纳秒的正确值。但是当我使用xcorr(pulse1,pulse2)
时,结果大约是11.2纳秒......我在这里做错了什么?
xcorr:
r=xcorr(pulse1,pulse2);
[a,b]=max(r);
delay=20/4096*b;
here's互相关的图
finddelay:
delay=finddelay(v1,v2);
t=20/4096*delay;
在第一种情况下,延迟= 2308,在第二种情况下延迟= 1788
答案 0 :(得分:0)
在您的问题中,您没有提及采样频率,因为finddelay
和xcorr
将为您提供样本数量的延迟。
检查此示例,
Fs = 100;
L = 1000;
t = (-L / 2 : 1 : L / 2) / Fs;
y1 = sinc(t);
y2 = sinc(t - 1);
plot(t,y1,'b'); hold on;
plot(t,y2,'m');
d1 = finddelay(y1,y2) / Fs;
[c,lags]=xcorr(y1,y2);
d2 = -(lags(c == max(c))) / Fs; % minus is for nature of xcorr
d1
和d2
的答案均为1
。
答案 1 :(得分:0)
正如上面的答案所暗示的,你的错误是你使用xcorr。您需要同时询问“c”值和“滞后”:
[c,lags]=xcorr(pulse1,pulse2); %do the cross-correlation
[max_c,I]=max(x); %find the best correlation
delay = lags(I); %here is the delay in samples