参考自:https://blog.csdn.net/u010592995/article/details/79841108
N=256;
di=20;
x1=test(1+di-10:N+di-10);%x1延后x2 10个点
x2=test(1+di:N+di)
时域相关计算:
N =length(x2);
[xc,zuobiao]= xcorr(x1,x2);
[k,ind] = max(xc);
位置在:ind-N
或:
xc12 = zeros(2*N-1,1);
m = 0;
for i = -(N-1):N-1
m = m+1;
for t = 1:N
if 0<(i+t)&&(i+t)<=N
xc12(m) = xc12(m) + x2(t)*x1(t+i);
end
end
end
xc12 = xc12/N;
figure,plot(xc12,'k')
或利用频域计算:
% 互相关计算,频域
X1=fft(x1,2*N-1);
X2=fft(x2,2*N-1);
Sxy=X1.*conj(X2);
Cxy=fftshift(ifft(Sxy));
NN=length(x1)+length(x2)-1;
NFFT = N;
%range = NFFT/2+1-(NN-1)/2:NFFT/2+1+(NN-1)/2;
subplot(212)
t1=(0:2*N-2)/Fs;
plot(Cxy,'b');
[maxv,location]=max(Cxy);或
ind-N:
x1滞后x2,得到正的距离; 否则x1超前x2,得到负的距离