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
,这意味着输入类型的默认累积类型。
- 返回值:
包含互相关结果的数组。
- 返回值类型:
另请参见
jax.scipy.signal.correlate()
: ND 相关性jax.numpy.convolve()
: 一维卷积
示例
>>> 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)