我有一对1D数组(长度不同),如下所示:
data1 = [0,0,0,1,1,1,0,1,0,0,1]
data2 = [0,1,1,0,1,0,0,1]
我想在Python中获得两个序列的最大交叉相关性。在Matlab中,xcorr()
函数可以返回正确结果。
我尝试了以下两种方法:
numpy.correlate(data1, data2)
signal.fftconvolve(data2, data1[::-1], mode='full')
这两种方法都给出相同的值,但是我从Python获得的值与从Matlab获得的值不同。Python给出的整数值大于1,而Matlab给出的是0到1之间的实际相关值。
我尝试先对两个数组进行归一化(减去平均值除以标准差),但我得到的交叉相关值却是在千位数级别,这似乎不正确。
Matlab还会给出一个滞后值,在该滞后值下交叉相关性最大。如果我的数组包含数万个值,使用索引很容易做到这一点,但最合适的方法是什么?
我想模仿Matlab中的xcorr()
函数,在Python中怎样实现呢?