用法:
cusignal.convolution.convolve.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 或 數組 ints 或 None,可選
計算卷積的軸。默認值是在所有軸上。
- out:數組
一個 N 維數組,包含
in1
與in2
的離散線性卷積的子集。
參數:
返回:
例子:
白噪聲的自相關是一種脈衝。
>>> 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()
相關用法
- Python cusignal.convolution.convolve.convolve2d用法及代碼示例
- Python cusignal.convolution.convolve.convolve1d3o用法及代碼示例
- Python cusignal.convolution.convolve.convolve1d2o用法及代碼示例
- Python cusignal.convolution.convolve.choose_conv_method用法及代碼示例
- Python cusignal.convolution.convolve.convolve用法及代碼示例
- Python cusignal.convolution.correlate.correlate用法及代碼示例
- Python cusignal.windows.windows.hann用法及代碼示例
- Python cusignal.windows.windows.general_gaussian用法及代碼示例
- Python cusignal.waveforms.waveforms.chirp用法及代碼示例
- Python cusignal.windows.windows.gaussian用法及代碼示例
- Python cusignal.windows.windows.hamming用法及代碼示例
- Python cusignal.windows.windows.get_window用法及代碼示例
- Python cusignal.waveforms.waveforms.gausspulse用法及代碼示例
- Python cusignal.peak_finding.peak_finding.argrelmin用法及代碼示例
- Python cusignal.windows.windows.bartlett用法及代碼示例
- Python cusignal.spectral_analysis.spectral.welch用法及代碼示例
- Python cusignal.windows.windows.chebwin用法及代碼示例
- Python cusignal.windows.windows.general_cosine用法及代碼示例
- Python cusignal.peak_finding.peak_finding.argrelextrema用法及代碼示例
- Python cusignal.filtering.resample.resample_poly用法及代碼示例
注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cusignal.convolution.convolve.fftconvolve。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。