scipy.signal.convolve

scipy.signal.convolve(in1, in2, mode='full', method='auto')[源代码]

对两个N维数组进行卷积。

卷积 in1in2 ,输出大小由 mode 论点。

参数
in1array_like

第一次输入。

in2array_like

第二个输入。应具有与的维度数量相同的维度 in1

modestr{‘完整’,‘有效’,‘相同’},可选

指示输出大小的字符串:

full

输出是输入的全离散线性卷积。(默认)

valid

输出只包含那些不依赖于补零的元素。在“有效”模式下, in1in2 必须在每个维度上至少与其他维度一样大。

same

输出的大小与 in1 ,相对于“完整”输出居中。

methodstr{‘AUTO’,‘DIRECT’,‘FFT’},可选

一个字符串,指示使用哪种方法计算卷积。

direct

卷积是由和直接确定的,这是卷积的定义。

fft

傅里叶变换用于通过调用 fftconvolve

auto

根据估计的速度较快(默认)自动选择直接或傅立叶方法。有关更多详细信息,请参见注释。

0.19.0 新版功能.

退货
convolve阵列

包含以下项的离散线性卷积的子集的N维数组 in1 使用 in2

参见

numpy.polymul

执行多项式乘法(相同的运算,但也接受Poly1d对象)

choose_conv_method

选择最快、合适的卷积方法

fftconvolve

始终使用FFT方法。

oaconvolve

使用重叠相加方法进行卷积,当输入数组较大且大小差异较大时,此方法通常会更快。

注意事项

默认情况下, convolvecorrelate 使用 method='auto' ,它调用 choose_conv_method 使用预计算值选择最快方法的步骤 (choose_conv_method 还可以使用关键字参数测量实际计时)。因为 fftconvolve 依赖于浮点数,则某些约束可能会强制 method=direct (更多详细信息请参见 choose_conv_method 文档字符串)。

示例

使用Hann窗口平滑方形脉冲:

>>> from scipy import signal
>>> sig = np.repeat([0., 1., 0.], 100)
>>> win = signal.windows.hann(50)
>>> filtered = signal.convolve(sig, win, mode='same') / sum(win)
>>> import matplotlib.pyplot as plt
>>> fig, (ax_orig, ax_win, ax_filt) = plt.subplots(3, 1, sharex=True)
>>> ax_orig.plot(sig)
>>> ax_orig.set_title('Original pulse')
>>> ax_orig.margins(0, 0.1)
>>> ax_win.plot(win)
>>> ax_win.set_title('Filter impulse response')
>>> ax_win.margins(0, 0.1)
>>> ax_filt.plot(filtered)
>>> ax_filt.set_title('Filtered signal')
>>> ax_filt.margins(0, 0.1)
>>> fig.tight_layout()
>>> fig.show()
../../_images/scipy-signal-convolve-1.png