python - numpy.correlate 是否与 scipy.signal.correlate 不同,如果两者都用于一维数组?
问题描述
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 的用例是什么?
解决方案
scipy 实现在某些情况下会调用 numpy 版本,但在可能更快时也会使用更快的基于 FFT 的实现。有关详细信息,请参阅choose_conv_method
或来源
这种“重复”是为了让 numpy 可以提供优化的功能基础,通常由 scipy 扩展以提供更完整的功能覆盖(通常不太优化,但仍然主要是本机代码,非常快且数值稳定)。这种明显重复的其他示例是线性代数功能(linalg
包)和傅立叶变换(其中 numpy 提供了一些有限的功能,而 scipy 导出了大部分fftpack
)
推荐阅读
- sql - Elasticsearch 有 count(*)= n
- c# - C#:如何序列化 RenderFragment(Razor 模板)?
- python - 如何在 Python 中加入分割线的范围
- c# - 设置地理围栏时出现 UWP/C#“访问被拒绝”异常
- android - 如何获取文档 ID 以向其中添加集合 - android studio firestore
- java - Quarkus 在编译/构建时移除未使用的注解,这是我们在运行时需要的
- vuex - 如何在 vuex 商店的 v-for 中改变数组?
- sql - 如何使用 Oracle Query 为给定条件添加设置为“1”的标志?
- c - 是否有必要在函数声明中(用 C 语言)编写 PARAMETER 类型?
- linux - 安排一个 cron 作业来运行一个 ping IP 地址并将其保存到日志文件的脚本