过去几天我一直在尝试计算两个向量对(x和y)的自由度,参考了Chelton(1983)的方法,具体如下:
我无法找到合适的方法使用np.correlate来计算标准化的互相关函数,我得到的输出总是超出了-1到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