jax.numpy.correlate#

jax.numpy.correlate(a, v, mode='valid', *, precision=None, preferred_element_type=None)[原始碼]#

兩個一維陣列的相關性。

JAX 實作的 numpy.correlate()

一維陣列的相關性定義為

\[c_k = \sum_j a_{k + j} \overline{v_j}\]

其中 \(\overline{v_j}\)\(v_j\) 的複共軛。

參數:
  • a (ArrayLike) – 相關性的左手邊輸入。必須有 a.ndim == 1

  • v (ArrayLike) – 相關性的右手邊輸入。必須有 v.ndim == 1

  • mode (str) –

    控制輸出的尺寸。可用的操作為

    • "full":輸出輸入的完整相關性。

    • "same":傳回 "full" 輸出的中心部分,其大小與 a 相同。

    • "valid":(預設)傳回 "full" 輸出中不依賴於陣列邊緣填充的部分。

  • precision (PrecisionLike) – 指定計算的精確度。請參閱 jax.lax.Precision 以取得可用值的描述。

  • preferred_element_type (DTypeLike | None) – 一種資料型別,指示將結果累積並傳回具有該資料型別的結果。預設值為 None,表示輸入型別的預設累積型別。

傳回值:

包含互相關結果的陣列。

傳回型別:

陣列

另請參閱

範例

>>> x = jnp.array([1, 2, 3, 2, 1])
>>> y = jnp.array([4, 5, 6])

由於預設 mode = 'valid'jax.numpy.correlate 僅傳回兩個陣列完全重疊的相關性部分

>>> jnp.correlate(x, y)
Array([32., 35., 28.], dtype=float32)

指定 mode = 'full' 傳回使用陣列邊緣的隱含零填充的完整相關性。

>>> jnp.correlate(x, y, mode='full')
Array([ 6., 17., 32., 35., 28., 13.,  4.], dtype=float32)

指定 mode = 'same' 傳回與第一個輸入相同大小的中心相關性

>>> jnp.correlate(x, y, mode='same')
Array([17., 32., 35., 28., 13.], dtype=float32)

如果輸入陣列都是實數值且對稱,則結果也將是對稱的,並且將等於 jax.numpy.convolve 的結果。

>>> x1 = jnp.array([1, 2, 3, 2, 1])
>>> y1 = jnp.array([4, 5, 4])
>>> jnp.correlate(x1, y1, mode='full')
Array([ 4., 13., 26., 31., 26., 13.,  4.], dtype=float32)
>>> jnp.convolve(x1, y1, mode='full')
Array([ 4., 13., 26., 31., 26., 13.,  4.], dtype=float32)

對於複數值輸入

>>> x2 = jnp.array([3+1j, 2, 2-3j])
>>> y2 = jnp.array([4, 2-5j, 1])
>>> jnp.correlate(x2, y2, mode='full')
Array([ 3. +1.j,  3.+17.j, 18.+11.j, 27. +4.j,  8.-12.j], dtype=complex64)