参考自:https://blog.youkuaiyun.com/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,得到负的距离

本文介绍了一种使用MATLAB进行时域和频域信号相关性计算的方法,包括时域互相关函数的直接计算及利用FFT进行频域互相关计算。通过实例展示了信号x1相对于信号x2的时间延迟如何通过互相关峰值来确定。
1011

被折叠的 条评论
为什么被折叠?



