jax.numpy.correlate

内容

jax.numpy.correlate#

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

两个一维数组的相关性。

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)