最近几天我一直在努力计算两对向量(x 和 y)的自由度,参考 Chelton(1983)是:
而且我找不到使用 np.correlate 计算归一化互相关函数的正确方法,我总是得到一个不在 -1、1 之间的输出。
有什么简单的方法可以使互相关函数归一化以计算两个向量的自由度?
原文由 Daniela Belén Risaro 发布,翻译遵循 CC BY-SA 4.0 许可协议
最近几天我一直在努力计算两对向量(x 和 y)的自由度,参考 Chelton(1983)是:
而且我找不到使用 np.correlate 计算归一化互相关函数的正确方法,我总是得到一个不在 -1、1 之间的输出。
有什么简单的方法可以使互相关函数归一化以计算两个向量的自由度?
原文由 Daniela Belén Risaro 发布,翻译遵循 CC BY-SA 4.0 许可协议
MATLAB ➜ xcorr(a, b, ‘归一化’);
Python 中的 MATLAB 规范化互相关实现。
import numpy as np
a = [1, 2, 3, 4]
b = [2, 4, 6, 8]
norm_a = np.linalg.norm(a)
a = a / norm_a
norm_b = np.linalg.norm(b)
b = b / norm_b
c = np.correlate(a, b, mode = 'full')
原文由 Enes Zeybek 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答884 阅读✓ 已解决
好问题。没有直接的方法,但您可以在使用之前“规范化”输入向量
np.correlate
像这样,合理的值将在 [-1,1] 范围内返回:在这里,我定义了信号处理教科书中通常定义的相关性。
代码:如果 a 和 b 是向量:
参考:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.correlate.html
https://en.wikipedia.org/wiki/Cross-correlation