當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy signal.convolve用法及代碼示例

本文簡要介紹 python 語言中 scipy.signal.convolve 的用法。

用法:

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

卷積兩個 N 維數組。

卷積 in1 和 in2,輸出大小由 mode 參數確定。

參數

in1 array_like

第一個輸入。

in2 array_like

第二輸入。應該具有與 in1 相同的維數。

mode str {‘full’, ‘valid’, ‘same’},可選

指示輸出大小的字符串:

full

輸出是輸入的完全離散線性卷積。 (默認)

valid

輸出僅包含那些不依賴零填充的元素。在 ‘valid’ 模式中,in1 或 in2 在每個維度上都必須至少與另一個一樣大。

same

輸出與 in1 大小相同,以 ‘full’ 輸出為中心。

method str {‘auto’, ‘direct’, ‘fft’},可選

一個字符串,指示使用哪種方法來計算卷積。

direct

卷積直接從總和確定,即卷積的定義。

fft

傅裏葉變換用於通過調用 fftconvolve 來執行卷積。

auto

根據更快的估計自動選擇直接或傅立葉方法(默認)。有關詳細信息,請參閱注釋。

返回

convolve 數組

一個 N 維數組,包含 in1 與 in2 的離散線性卷積的子集。

警告

RuntimeWarning

對包含 NAN 或 INF 的輸入使用 FFT 卷積將導致整個輸出為 NAN 或 INF。當您的輸入包含 NAN 或 INF 值時,請使用 method='direct'。

注意

默認,convolvescipy.signal.correlate采用method='auto',它調用scipy.signal.choose_conv_method使用預先計算的值選擇最快的方法(scipy.signal.choose_conv_method也可以使用關鍵字參數測量real-world 時間)。因為scipy.signal.fftconvolve依賴於浮點數,有一些約束可能會強製方法=直接(更詳細的scipy.signal.choose_conv_method文檔字符串)。

例子

使用 Hann 窗平滑方脈衝:

>>> import numpy as np
>>> 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()
scipy-signal-convolve-1.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.convolve。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。