def conv(data, kernel, mode='full', method='fft', use_jit=True):
"""Convoles data with a kernel using either FFT or sparse convolution
This function convolves data with a kernel, relying either on the
fast Fourier transform (FFT) or a sparse convolution function.
Parameters
----------
data : array_like
First input, typically the data array
kernel : array_like
Second input, typically the kernel
mode : str {'full', 'valid', 'same'}, optional, default: 'full'
A string indicating the size of the output:
- ``full``:
The output is the full discrete linear convolution of the inputs.
- ``valid``:
The output consists only of those elements that do not rely on
zero-padding.
- ``same``:
The output is the same size as `data`, centered with respect to the
'full' output.
method : str {'fft', 'sparse'}, optional, default: 'fft'
A string indicating the convolution method:
- ``fft``:
Use the fast Fourier transform (FFT).
- ``sparse``:
Use the sparse convolution.
use_jit : bool, optional, default: True
A flag indicating whether to use Numba's just-in-time compilation
option (only relevant for `method`=='sparse').
"""
if method.lower() == 'fft':
# Use FFT: faster on non-sparse data
conved = sps.fftconvolve(data, kernel, mode)
elif method.lower() == 'sparse':
# Use sparseconv: faster on sparse data
conved = sparseconv(data, kernel, mode, use_jit)
else:
raise ValueError("Acceptable methods are: 'fft', 'sparse'.")
return conved
评论列表
文章目录