xcorr против finddelay для нахождения задержки между сигналами

Вычисляя временную задержку между двумя импульсами, показанными здесь, используя функцию finddelay(pulse1,pulse2), я получаю правильное значение 8,73 нсек. Однако, когда я использую xcorr(pulse1,pulse2), результат составляет около 11,2 нс... Что я здесь делаю неправильно?

исправление:

r=xcorr(pulse1,pulse2); 
[a,b]=max(r);
delay=20/4096*b;

вот график взаимной корреляции

найтизадержку:

delay=finddelay(v1,v2);
t=20/4096*delay;

В первом случае задержка=2308, а во втором задержка=1788.


person James    schedule 23.11.2014    source источник
comment
Как вы получили задержку с xcorr?   -  person Ander Biguri    schedule 23.11.2014
comment
Для 20-секундного окна с 4096 точками/окном задержка составляет (20/4096)*c, где c — положение максимума последовательности xcorr() (в моем случае c=2308)   -  person James    schedule 23.11.2014
comment
Можно ли поместить какие-то данные и какой-то кусок кода? На uk.mathworks.com/ есть хороший пример того, как это сделать правильно. help/signal/ref/xcorr.html. Попробуйте свой фрагмент кода против предложенного, посмотрите, получится ли у вас то же самое.   -  person Ander Biguri    schedule 23.11.2014


Ответы (2)


В своем вопросе вы не упомянули частоту дискретизации, поскольку 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.

person Rashid    schedule 23.11.2014

Как следует из ответа выше, ваша ошибка связана с использованием 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
person chipaudette    schedule 23.11.2014
comment
Ну... я тоже только что понял! Тем не менее, спасибо за наводку! :) - person James; 23.11.2014