Python中的规范化互相关
最近几天,我一直在努力计算两对向量(x和y)的自由度,参考Chelton(1983),即: 我找不到一个合适的方法来计算归一化互相关函数, 我总是得到一个不在-1,1之间的输出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
为了计算两个向量的自由度,有没有简单的方法来归一化互相关函数?好问题。没有直接的方法,但您可以在使用
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)?@RonUlen(a)
表示或的N
相当于max(len(a),len(b))
。因此,c=np.correlate(归一化a,归一化b,'full')/max(len(a),len(b))
可能更容易理解。