NumPy相关函数中的索引范围

时间:2018-03-20 18:51:37

标签: python numpy correlation

我正在研究NumPy correlation function

numpy.correlate(a, v, mode='valid')[source]
Cross-correlation of two 1-dimensional sequences.

此函数计算信号处理文本中通常定义的相关性:

c_{av}[k] = sum_n a[n+k] * conj(v[n])

然后是例子:

a = [1, 2, 3]
v = [0, 1, 0.5]
np.correlate([1, 2, 3], [0, 1, 0.5], "full")
array([ 0.5,  2. ,  3.5,  3. ,  0. ])

因此,在此示例中,输出数组中的k从0到4。但是,我想知道当(n + k)>时,如何定义[n + k]。 2在这种情况下?

另外,如何定义共轭(v(n))以及如何计算数组中的每个元素?

1 个答案:

答案 0 :(得分:1)

公式c_{av}[k] = sum_n a[n+k] * conj(v[n])有点误导,因为左边的k不一定是输出数组的Python索引。在#full;'模式,k的可能值是至少存在一个n的值,以便定义a[n+k] * conj(v[n])(即,n + k和n都落在各自的范围内)阵列)。

在您的示例中,sum_n a[n+k] * conj(v[n])中的k可以是-2,-1,0,1,2。这些生成5个值。例如,k为-2导致a[2-2]*conj(v[2])为0.5,依此类推。

一般来说,'完整'中的k的范围。模式从1-len(a)len(v)-1包含在内。所以,如果k真的被理解为Python索引,那么公式应该是

c_{av}[k] = sum_n a[n+k+len(a)-1] * conj(v[n])