deconvolve#
- scipy.signal.deconvolve(signal, divisor)[source]#
Deconvolves
divisorout ofsignalusing inverse filtering.Returns the quotient and remainder such that
signal = convolve(divisor, quotient) + remainder- Parameters:
- signal(N,) array_like
Signal data, typically a recorded signal
- divisor(N,) array_like
Divisor data, typically an impulse response or filter that was applied to the original signal
- Returns:
- quotientndarray
Quotient, typically the recovered original signal
- remainderndarray
Remainder
See also
numpy.polydivperforms polynomial division (same operation, but also accepts poly1d objects)
Notes
Array API Standard Support
deconvolvehas experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variableSCIPY_ARRAY_API=1and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.Library
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
✅
PyTorch
✅
⛔
JAX
⛔
⛔
Dask
⚠️ computes graph
n/a
See Support for the array API standard for more information.
Examples
Deconvolve a signal that’s been filtered:
>>> from scipy import signal >>> original = [0, 1, 0, 0, 1, 1, 0, 0] >>> impulse_response = [2, 1] >>> recorded = signal.convolve(impulse_response, original) >>> recorded array([0, 2, 1, 0, 2, 3, 1, 0, 0]) >>> recovered, remainder = signal.deconvolve(recorded, impulse_response) >>> recovered array([ 0., 1., 0., 0., 1., 1., 0., 0.]) >>> remainder array([0., 0., 0., 0., 0., 0., 0., 0., 0.])