Python中的规范化互相关

2024-06-24 13:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

最近几天,我一直在努力计算两对向量(x和y)的自由度,参考了Chelton(1983),即:

degrees of freedom according to Chelton(1983)

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

为了计算两个向量的自由度,有没有简单的方法使互相关函数正规化?


Tags: ofto方法函数np向量freedomdegrees
2条回答

a = np.dot(abs(var1),abs(var2),'full')

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

c = b/a

这是我的想法:但它将使其正常化0-1

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

在这里,我定义了信号处理教科书中通常定义的相关性。

c'_{ab}[k] = sum_n a[n] conj(b[n+k])

代码:如果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')

参考文献:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.correlate.html

https://en.wikipedia.org/wiki/Cross-correlation

enter image description here

相关问题 更多 >