numpy.
convolve
返回两个一维序列的离散线性卷积。
卷积算子常出现在信号处理中,它模拟线性时不变系统对信号的影响。 [1]. 在概率论中,两个独立随机变量的和是根据它们各自分布的卷积分布的。
如果 v 长于 a ,在计算之前交换阵列。
第一个一维输入数组。
第二个一维输入数组。
默认情况下,模式为“满”。这将返回每个重叠点的卷积,输出形状为(n+m-1,)。在卷积的终点处,信号没有完全重叠,可能会出现边界效应。
“相同”模式返回长度的输出 max(M, N) . 边界效果仍然可见。
max(M, N)
模式“valid”返回长度的输出 max(M, N) - min(M, N) + 1 . 卷积积仅给出信号完全重叠的点。信号边界之外的值不起作用。
max(M, N) - min(M, N) + 1
离散线性卷积 a 和 v .
参见
scipy.signal.fftconvolve
使用快速傅立叶变换对两个阵列进行卷积。
scipy.linalg.toeplitz
用于构造卷积运算符。
polymul
多项式乘法。输出与卷积相同,但也接受poly1d对象作为输入。
笔记
离散卷积运算定义为
可以证明卷积 在时间/空间上等于乘法 在傅立叶域中,在适当的填充之后(填充是防止循环卷积所必需的)。由于乘法比卷积更有效(更快),因此函数 scipy.signal.fftconvolve 利用FFT计算大数据集的卷积。
工具书类
维基百科,“卷积”,https://en.wikipedia.org/wiki/卷积
实例
请注意卷积运算符如何在两个数组之间“滑动”之前翻转第二个数组:
>>> np.convolve([1, 2, 3], [0, 1, 0.5]) array([0. , 1. , 2.5, 4. , 1.5])
只返回卷积的中间值。包含边界效应,其中考虑零:
>>> np.convolve([1,2,3],[0,1,0.5], 'same') array([1. , 2.5, 4. ])
两个数组的长度相同,因此只有一个位置完全重叠:
>>> np.convolve([1,2,3],[0,1,0.5], 'valid') array([2.5])