原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.convolve.html
校对:(虚位以待)
numpy.
convolve
(a, v, mode='full')[source]返回两个一维序列的离散,线性卷积。
卷积算子常常出现在信号处理中,其中它模拟线性时不变系统对信号[R17]的影响。在概率理论中,两个独立的随机变量的和根据它们各自的分布的卷积来分布。
如果v长于a,则在计算之前交换数组。
参数: | a:(N,)array_like
v:(M,)array_like
mode:{'full','valid','same'},可选
|
---|---|
返回: | out:ndarray
|
也可以看看
scipy.signal.fftconvolve
scipy.linalg.toeplitz
polymul
笔记
离散卷积运算定义为
It can be shown that a convolution in time/space is equivalent to the multiplication in the Fourier domain, after appropriate padding (padding is necessary to prevent circular convolution). 由于乘法比卷积更有效(更快),函数scipy.signal.fftconvolve
利用FFT来计算大数据集的卷积。
参考文献
[R17] | (1,2) Wikipedia,“Convolution”,http://en.wikipedia.org/wiki/Convolution 。 |
例子
注意卷积运算符如何在“滑动”两个数组之前翻转第二个数组:
>>> 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])