mindspore.numpy.correlate

mindspore.numpy.correlate(a, v, mode='valid')[源代码]

两个一维序列的互相关。

函数根据信号处理教材中通常定义的方式计算相关性: \(c_{av}[k] = \sum_{n}{a[n+k] * conj(v[n])}\)

其中,序列 av 在必要时将进行零填充, conj 为共轭。

说明

  • correlate 目前仅用于 mindscience 科学计算场景, 并不支持其他使用场景。

  • correlate 还未在Windows平台上得到支持。

参数:
  • a (Union[list, tuple, Tensor]) - 第一个输入序列。

  • v (Union[list, tuple, Tensor]) - 第二个输入序列。

  • mode (str, 可选) - 指定的填充模式。 可选值: "same""valid""full" 。 默认值: "valid"

    "same" :返回的输出长度为 \(max(M, N)\) 。 仍然可见边界效应。

    "valid" :返回的输出长度为 \(max(M, N) - min(M, N) - 1\) 。 卷积乘积仅在信号完全重叠的点给出。 信号边界外的值不产生效果。

    "full" :在每个重叠点返回卷积,输出的shape为 \((N + M - 1)\)。 在卷积的端点,信号不完全重叠,可能会看到边界效应。

返回:

Tensor, av 的离散互相关。

异常:
  • TypeError - 如果 av 不是Tensor。

  • TypeError - 如果 av 的类型不同。

  • ValueError - 如果 av 为空或维数错误。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore.numpy as mnp
>>> from mindspore import Tensor
>>> output = mnp.correlate(Tensor([1., 2., 3.]), Tensor([0., 1., 0.5]))
>>> print(output)
[3.5]
>>> output = mnp.correlate(Tensor([1., 2., 3.]), Tensor([0., 1., 0.5]), mode="same")
>>> print(output)
[2.  3.5 3. ]
>>> output = mnp.correlate(Tensor([1., 2., 3., 4., 5.]), Tensor([1., 2.]), mode="full")
>>> print(output)
[ 2.  5.  8. 11. 14.  5.]