pylops.signalprocessing.Sliding2D#
- class pylops.signalprocessing.Sliding2D(Op, dims, dimsd, nwin, nover, tapertype='hanning', savetaper=True, name='S')[source]#
2D Sliding transform operator.
Apply a transform operator
Op
repeatedly to slices of the model vector in forward mode and slices of the data vector in adjoint mode. More specifically, in forward mode the model vector is divided into slices, each slice is transformed, and slices are then recombined in a sliding window fashion. Both model and data are internally reshaped and interpreted as 2-dimensional arrays: each slice contains a portion of the array in the first dimension (and the entire second dimension).This operator can be used to perform local, overlapping transforms (e.g.,
pylops.signalprocessing.FFT2D
orpylops.signalprocessing.Radon2D
) on 2-dimensional arrays.Note
The shape of the model has to be consistent with the number of windows for this operator not to return an error. As the number of windows depends directly on the choice of
nwin
andnover
, it is recommended to first runsliding2d_design
to obtain the correspondingdims
and number of windows.Note
Two kind of operators
Op
can be provided: the first applies a single transformation to each window separately; the second applies the transformation to all of the windows at the same time. This is directly inferred during initialization when the following condition holdsOp.shape[1] == np.prod(dims)
.Warning
Depending on the choice of nwin and nover as well as the size of the data, sliding windows may not cover the entire data. The start and end indices of each window will be displayed and returned with running
sliding2d_design
.- Parameters
- Op
pylops.LinearOperator
Transform operator
- dims
tuple
Shape of 2-dimensional model. Note that
dims[0]
should be multiple of the model size of the transform in the first dimension- dimsd
tuple
Shape of 2-dimensional data
- nwin
int
Number of samples of window
- nover
int
Number of samples of overlapping part of window
- tapertype
str
, optional Type of taper (
hanning
,cosine
,cosinesquare
orNone
)- savetaper
bool
, optional New in version 2.3.0.
Save all tapers and apply them in one go (
True
) or save unique tapers and apply them one by one (False
). The first option is more computationally efficient, whilst the second is more memory efficient.- name
str
, optional New in version 2.0.0.
Name of operator (to be used by
pylops.utils.describe.describe
)
- Op
- Returns
- Sop
pylops.LinearOperator
Sliding operator
- Sop
- Raises
- ValueError
Identified number of windows is not consistent with provided model shape (
dims
).
Methods
__init__
(Op, dims, dimsd, nwin, nover[, ...])adjoint
()apply_columns
(cols)Apply subset of columns of operator
cond
([uselobpcg])Condition number of linear operator.
conj
()Complex conjugate operator
div
(y[, niter, densesolver])Solve the linear problem \(\mathbf{y}=\mathbf{A}\mathbf{x}\).
dot
(x)Matrix-matrix or matrix-vector multiplication.
eigs
([neigs, symmetric, niter, uselobpcg])Most significant eigenvalues of linear operator.
matmat
(X)Matrix-matrix multiplication.
matvec
(x)Matrix-vector multiplication.
reset_count
()Reset counters
rmatmat
(X)Matrix-matrix multiplication.
rmatvec
(x)Adjoint matrix-vector multiplication.
todense
([backend])Return dense matrix.
toimag
([forw, adj])Imag operator
toreal
([forw, adj])Real operator
tosparse
()Return sparse matrix.
trace
([neval, method, backend])Trace of linear operator.
transpose
()