首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解释numpy.correlate和numpy.corrcoef的返回值?

如何解释numpy.correlate和numpy.corrcoef的返回值?
EN

Stack Overflow用户
提问于 2012-11-18 19:33:26
回答 2查看 46.9K关注 0票数 36

我有两个一维数组,我想看看它们之间的关系。我应该在numpy中使用什么过程?我使用的是numpy.corrcoef(arrayA, arrayB)numpy.correlate(arrayA, arrayB),它们都给出了一些我无法理解或理解的结果。

有没有人能解释一下如何理解和解释这些数值结果(最好是用一个例子)?

EN

回答 2

Stack Overflow用户

发布于 2012-11-18 22:28:18

numpy.correlate只是返回两个向量的互相关值。

如果您需要了解交叉相关,那么从http://en.wikipedia.org/wiki/Cross-correlation开始。

一个很好的例子可以通过查看自相关函数(与自身相互关联的向量)来看到:

代码语言:javascript
复制
import numpy as np

# create a vector
vector = np.random.normal(0,1,size=1000) 

# insert a signal into vector
vector[::50]+=10

# perform cross-correlation for all data points
output = np.correlate(vector,vector,mode='full')

当两个数据集重叠时,这将返回一个带有最大值的comb/shah函数。由于这是一种自相关,因此在两个输入信号之间不会有“滞后”。因此,相关性的最大值是vector.size-1。

如果您只需要重叠数据的相关值,则可以使用mode='valid'

票数 19
EN

Stack Overflow用户

发布于 2016-06-18 01:05:55

目前我只能对numpy.correlate发表评论。这是一个强大的工具。我使用它有两个目的。第一种方法是在另一个模式中找到另一个模式:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

some_data = np.random.uniform(0,1,size=100)
subset = some_data[42:50]

mean = np.mean(some_data)
some_data_normalised = some_data - mean
subset_normalised = subset - mean

correlated = np.correlate(some_data_normalised, subset_normalised)
max_index = np.argmax(correlated)  # 42 !

我使用它的第二个用途(以及如何解释结果)是用于频率检测:

代码语言:javascript
复制
hz_a = np.cos(np.linspace(0,np.pi*6,100))
hz_b = np.cos(np.linspace(0,np.pi*4,100))

f, axarr = plt.subplots(2, sharex=True)

axarr[0].plot(hz_a)
axarr[0].plot(hz_b)
axarr[0].grid(True)

hz_a_autocorrelation = np.correlate(hz_a,hz_a,'same')[round(len(hz_a)/2):]
hz_b_autocorrelation = np.correlate(hz_b,hz_b,'same')[round(len(hz_b)/2):]

axarr[1].plot(hz_a_autocorrelation)
axarr[1].plot(hz_b_autocorrelation)
axarr[1].grid(True)

plt.show()

找出第二个峰值的指数。由此,您可以返回以找到频率。

代码语言:javascript
复制
first_min_index = np.argmin(hz_a_autocorrelation)
second_max_index = np.argmax(hz_a_autocorrelation[first_min_index:])
frequency = 1/second_max_index
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13439718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档