Python中的规范化互相关

时间:2018-11-22 18:04:19

标签: python numpy correlation cross-correlation

在最近的日子里,我一直在努力计算两对向量(x和y)的自由度,方法是参考Chelton(1983):

degrees of freedom according to Chelton(1983)

,我找不到使用np.correlate计算归一化互相关函数的正确方法, 我总是得到不在-1、1之间的输出。

有没有一种简便的方法可以对互相关函数进行归一化以便计算两个向量的自由度?

3 个答案:

答案 0 :(得分:7)

好问题。没有直接的方法,但是您可以像这样使用np.correlate来“标准化”输入向量,并且将在[-1,1]范围内返回合理的值:

如果a和b是向量:

a = (a - np.mean(a)) / (np.std(a) * len(a))
b = (b - np.mean(b)) / (np.std(b))
c = np.correlate(a, b, 'full')

答案 1 :(得分:0)

归一化互相关公式: 资料来源:https://anomaly.io/detect-correlation-time-series/ Normalized Cross-Correlation formula

Python代码: 'a'和'b'是用于找到相关性的序列,其类型是pandas.Dataframe

np.sum((a*b))/(np.sqrt((np.sum(a**2))*(np.sum(b**2))))

答案 2 :(得分:0)

b = np.correlate(var1,var2,'full')

c = b/a

{{1}}

这是我的想法:但是它将标准化为0-1