NumPy 相关函数中的索引范围
Range of index in NumPy correlation function
我正在调查 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) > 2 时 a[n+k] 是如何定义的?
另外,conjugate(v(n)) 是如何定义的,数组中的每个元素是如何计算的?
公式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,依此类推。
一般来说,'full'模式下k的取值范围是1-len(a)
到len(v)-1
。所以,如果k真的理解为Python索引,那么公式应该是
c_{av}[k] = sum_n a[n+k+len(a)-1] * conj(v[n])
我正在调查 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) > 2 时 a[n+k] 是如何定义的?
另外,conjugate(v(n)) 是如何定义的,数组中的每个元素是如何计算的?
公式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,依此类推。
一般来说,'full'模式下k的取值范围是1-len(a)
到len(v)-1
。所以,如果k真的理解为Python索引,那么公式应该是
c_{av}[k] = sum_n a[n+k+len(a)-1] * conj(v[n])