我正在尝试使用numpy.correlate
确定两个1D时间序列之间的相似性。
我编写了一个小示例程序,以了解有关互相关如何工作的更多信息,但是我并没有完全理解互相关输出的趋势。
代码:
import numpy as np
import matplotlib.pyplot as plt
#sample arrays to correlate
arr_1 = np.arange(1, 101) #[1, 2, 3, ..... 100]
arr_2 = np.concatenate([np.zeros(50), np.arange(50, 101)]) #[0, 0, ... 50, 51 ... 100]
cross_corr = np.correlate(arr_1, arr_2, "same")
plt.plot(list(cross_corr))
此图对我提出了几个问题。据我了解,互相关依赖于卷积运算(本质上是两个信号的内积的积分-造成一定的滞后)。
答案 0 :(得分:1)
您似乎对确切输出的内容感到困惑。老实说,该文档缺乏。输出为每个滞后计算两个数组之间的相关性。中点是滞后0
,相关性最高。
仅供参考,您的两个数组的大小不同。 arr_1
的长度为100,而arr_2
的长度为101。不确定这是否是有意的。