Python中的规范化互相关

Python中的规范化互相关,python,numpy,correlation,cross-correlation,Python,Numpy,Correlation,Cross Correlation,最近几天,我一直在努力计算两对向量(x和y)的自由度,参考Chelton(1983),即: 我找不到一个合适的方法来计算归一化互相关函数, 我总是得到一个不在-1,1之间的输出 为了计算两个向量的自由度,有没有简单的方法来归一化互相关函数?好问题。没有直接的方法,但您可以在使用np之前“规范化”输入向量。像这样关联,合理的值将在[-1,1]范围内返回: 在这里,我定义了信号处理教科书中通常定义的相关性 c'_{ab}[k] = sum_n a[n] conj(b[n+k]) 代码:如果a和b

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

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


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

好问题。没有直接的方法,但您可以在使用
np之前“规范化”输入向量。像这样关联
,合理的值将在[-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')
参考资料:

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

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

c=b/a


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

关于该主题的文章所有链接都在那里。这里有一个很好的答案:我尝试过它,但现在它得到的值一直到2,不会停留。你能在评论中发布一个这样的例子吗?@makis,你为什么要在你的代码示例中将标准偏差乘以len(a)?@RonU
len(a)
表示或的
N
相当于
max(len(a),len(b))
。因此,
c=np.correlate(归一化a,归一化b,'full')/max(len(a),len(b))
可能更容易理解。