0

scipy 的相关函数的文档声称它可以用于 N 维数组

scipy.signal.correlate(in1, in2, mode='full', method='auto')

互相关两个 N 维数组。互相关 in1 和 in2,输出大小由 mode 参数确定。

虽然 numpy 的相关只能用于一维序列。

numpy.correlate(a, v, mode='valid')

两个一维序列的互相关。此函数计算信号处理文本中通常定义的相关性:

c_{av}[k] = sum_n a[n+k] * conj(v[n])

a 和 v 序列在必要时补零,而 conj 是共轭。

那么,如果两者都用于两个一维数组,这些函数会有所不同吗?如果不是,numpy.correlate 的用例是什么?

4

1 回答 1

3

scipy 实现在某些情况下会调用 numpy 版本,但在可能更快时也会使用更快的基于 FFT 的实现。有关详细信息,请参阅choose_conv_method来源

这种“重复”是为了让 numpy 可以提供优化的功能基础,通常由 scipy 扩展以提供更完整的功能覆盖(通常不太优化,但仍然主要是本机代码,非常快且数值稳定)。这种明显重复的其他示例是线性代数功能(linalg包)和傅立叶变换(其中 numpy 提供了一些有限的功能,而 scipy 导出了大部分fftpack

于 2019-09-05T11:33:56.443 回答