def xcorr(a,b,mode ='coef'):
fa = np.fft.fft(a,n=len(a)*2-1)
fb = np.fft.fft(b,n=len(a)*2-1)
xx = fa*np.conj(fb)
xcc = np.fft.fftshift(np.fft.ifft(xx))
aa = fa*np.conj(fa)
xaa = np.fft.fftshift(np.fft.ifft(aa))
bb = fb*np.conj(fb)
xbb = np.fft.fftshift(np.fft.ifft(bb))
if mode == 'coef':
xcc = xcc/np.sqrt(xaa[len(a)-1]*xbb[len(b)-1])
return np.real(xcc)
以上为政宏老哥写的xcorr函数,对应numpy或者scipy的为
cc = np.correlate(lope1, lope, mode='full')/np.sqrt(np.correlate(lope,lope,mode='valid')[0]
*np.correlate(lope1,lope1,mode='valid')[0])
速度提升巨大,lgnb,感谢🙏