import numpy as np
import matplotlib.pyplot as plt
def xcorr(x,y):
result = np.correlate(x, y, mode='full')
return result[result.size/2:]
a = np.random.rand(1000)+ 40
plt.plot(xcorr(a,a))
plt.show()
为什么这段代码会给出一条向下倾斜的直线?
我认为不应该是一条直线的自相关...
这与numpy的自相关是否是错误的方法?
我使用的是:How can I use numpy.correlate to do autocorrelation?
但是.. numpy.correlate([4,4,4],[4,4,4],"全&#34) 给 数组([16,32,48,32,16])
numpy版本是1.8.1
非常感谢您的帮助。
答案 0 :(得分:0)
直线是您选择的特定测试用例的结果。如果您手动执行操作,则会得到:
R(-2) = 4*4 = 16;
R(-1) = 4*4 + 4*4 = 32;
R( 0) = 4*4 + 4*4 + 4*4 = 48;
R( 1) = 4*4 + 4*4 = 32;
R( 2) = 4*4 = 16;
对于不同的测试用例,例如numpy.correlate([1,2,3],[1,2,3],"full")
,您将得到:
R(-2) = 1*3 = 3;
R(-1) = 1*2 + 2*3 = 8;
R( 0) = 1*1 + 2*2 + 3*3 = 14;
R( 1) = 2*1 + 3*2 = 8;
R( 2) = 3*1 = 3;
这不再是一条直线。