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


Python cusignal.convolution.convolve.fftconvolve用法及代碼示例

用法:

cusignal.convolution.convolve.fftconvolve(in1, in2, mode='full', axes=None)

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

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

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

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

參數

in1array_like

第一個輸入。

in2array_like

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

modestr {‘full’, ‘valid’, ‘same’},可選

指示輸出大小的字符串:

full

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

valid

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

same

輸出與 in1 大小相同,以 ‘full’ 輸出為中心。軸:元組,可選

axesint 或 數組 ints 或 None,可選

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

返回

out數組

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

例子

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

>>> import cusignal
>>> import cupy as cp
>>> import numpy as np
>>> sig = cp.random.randn(1000)
>>> autocorr = cusignal.fftconvolve(sig, sig[::-1], mode='full')
>>> import matplotlib.pyplot as plt
>>> fig, (ax_orig, ax_mag) = plt.subplots(2, 1)
>>> ax_orig.plot(cp.asnumpy(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 misc
>>> face = misc.face(gray=True)
>>> kernel = cp.outer(cusignal.gaussian(70, 8), cusignal.gaussian(70, 8))
>>> blurred = cusignal.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(cp.asnumpy(kernel), cmap='gray')
>>> ax_kernel.set_title('Gaussian kernel')
>>> ax_kernel.set_axis_off()
>>> ax_blurred.imshow(cp.asnumpy(blurred), cmap='gray')
>>> ax_blurred.set_title('Blurred')
>>> ax_blurred.set_axis_off()
>>> fig.show()

相關用法


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