pylops.signalprocessing.Shift

pylops.signalprocessing.Shift(dims, shift, axis=-1, nfft=None, sampling=1.0, real=False, engine='numpy', dtype='complex128', name='S', **kwargs_fft)[source]

Shift operator

Apply fractional shift in the frequency domain along an axis of a multi-dimensional array of size dims.

Parameters:
dimstuple

Number of samples for each dimension

shiftfloat or numpy.ndarray

Fractional shift to apply in the same unit as sampling. For multi-dimensional inputs, this can be a scalar to apply to every trace along the chosen axis or an array of shifts to be applied to each trace.

axisint, optional

Added in version 2.0.0.

Axis along which shift is applied

nfftint, optional

Number of samples in Fourier Transform (same as input if nfft=None)

samplingfloat, optional

Sampling step \(\Delta t\).

realbool, optional

Model to which fft is applied has real numbers (True) or not (False). Used to enforce that the output of adjoint of a real model is real.

enginestr, optional

Engine used for fft computation (numpy, scipy, or fftw). Choose numpy when working with CuPy arrays.

dtypestr, optional

Type of elements in input array.

namestr, optional

Added in version 2.0.0.

Name of operator (to be used by pylops.utils.describe.describe)

**kwargs_fft

Arbitrary keyword arguments to be passed to the selected fft method

Returns:
Oppylops.LinearOperator

Shift operator.

Raises:
ValueError

If dims is provided and axis is bigger than len(dims)

NotImplementedError

If engine is neither numpy, scipy, nor fftw

Notes

The Shift operator applies the forward Fourier transform, an element-wise complex scaling, and inverse fourier transform

\[\mathbf{y}= \mathbf{F}^{-1} \mathbf{S} \mathbf{F} \mathbf{x}\]

Here \(\mathbf{S}\) is a diagonal operator that scales the Fourier transformed input by \(e^{-j2\pi f t_S}\), where \(t_S\) is the chosen shift.

Examples using pylops.signalprocessing.Shift

Shift

Shift