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


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


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

用法:

scipy.signal.fftconvolve(in1, in2, mode='full', axes=None)#

使用 FFT 對兩個 N 維數組進行卷積。

使用快速傅裏葉變換方法對 in1 和 in2 進行卷積,輸出大小由 mode 參數確定。

對於大型數組(n > ~500),這通常比 convolve 快得多,但在隻需要幾個輸出值時可能會更慢,並且隻能輸出浮點數組(int 或對象數組輸入將被強製轉換為浮點數) .

從 v0.19 開始, convolve 會自動選擇此方法或基於估計哪個更快的直接方法。

參數

in1 array_like

第一個輸入。

in2 array_like

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

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

指示輸出大小的字符串:

full

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

valid

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

same

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

axes int 或 數組 of ints 或 None,可選

計算卷積的軸。默認值是在所有軸上。

返回

out 數組

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

例子

白噪聲的自相關是一種脈衝。

>>> import numpy as np
>>> from scipy import signal
>>> rng = np.random.default_rng()
>>> sig = rng.standard_normal(1000)
>>> autocorr = signal.fftconvolve(sig, sig[::-1], mode='full')
>>> import matplotlib.pyplot as plt
>>> fig, (ax_orig, ax_mag) = plt.subplots(2, 1)
>>> ax_orig.plot(sig)
>>> ax_orig.set_title('White noise')
>>> ax_mag.plot(np.arange(-len(sig)+1,len(sig)), autocorr)
>>> ax_mag.set_title('Autocorrelation')
>>> fig.tight_layout()
>>> fig.show()

使用 FFT 卷積實現的高斯模糊。請注意圖像周圍的深色邊框,這是由於其邊界之外的零填充。 convolve2d 函數允許其他類型的圖像邊界,但速度要慢得多。

>>> from scipy import datasets
>>> face = datasets.face(gray=True)
>>> kernel = np.outer(signal.windows.gaussian(70, 8),
...                   signal.windows.gaussian(70, 8))
>>> blurred = signal.fftconvolve(face, kernel, mode='same')
>>> fig, (ax_orig, ax_kernel, ax_blurred) = plt.subplots(3, 1,
...                                                      figsize=(6, 15))
>>> ax_orig.imshow(face, cmap='gray')
>>> ax_orig.set_title('Original')
>>> ax_orig.set_axis_off()
>>> ax_kernel.imshow(kernel, cmap='gray')
>>> ax_kernel.set_title('Gaussian kernel')
>>> ax_kernel.set_axis_off()
>>> ax_blurred.imshow(blurred, cmap='gray')
>>> ax_blurred.set_title('Blurred')
>>> ax_blurred.set_axis_off()
>>> fig.show()
scipy-signal-fftconvolve-1_00.png
scipy-signal-fftconvolve-1_01.png

相關用法


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