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
,表示輸入型別的預設累積型別。
- 傳回值:
包含互相關結果的陣列。
- 傳回型別:
另請參閱
jax.scipy.signal.correlate()
:ND 相關性jax.numpy.convolve()
:1D 卷積
範例
>>> 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)