pylops.Restriction

class pylops.Restriction(M, iava, dims=None, dir=0, dtype='float64', inplace=True)[source]

Restriction (or sampling) operator.

Extract subset of values from input vector at locations iava in forward mode and place those values at locations iava in an otherwise zero vector in adjoint mode.

Parameters:
M : int

Number of samples in model.

iava : list or numpy.ndarray

Integer indices of available samples for data selection.

dims : list

Number of samples for each dimension (None if only one dimension is available)

dir : int, optional

Direction along which restriction is applied.

dtype : str, optional

Type of elements in input array.

inplace : bool, optional

Work inplace (True) or make a new copy (False). By default, data is a reference to the model (in forward) and model is a reference to the data (in adjoint).

See also

pylops.signalprocessing.Interp
Interpolation operator

Notes

Extraction (or sampling) of a subset of \(N\) values at locations iava from an input (or model) vector \(\mathbf{x}\) of size \(M\) can be expressed as:

\[y_i = x_{l_i} \quad \forall i=0,1,\ldots,N-1\]

where \(\mathbf{l}=[l_0, l_1,\ldots, l_{N-1}]\) is a vector containing the indeces of the original array at which samples are taken.

Conversely, in adjoint mode the available values in the data vector \(\mathbf{y}\) are placed at locations \(\mathbf{l}=[l_0, l_1,\ldots, l_{M-1}]\) in the model vector:

\[x_{l_i} = y_i \quad \forall i=0,1,\ldots,N-1\]

and \(x_{j}=0\) for \(j \neq l_i\) (i.e., at all other locations in input vector).

Attributes:
shape : tuple

Operator shape

explicit : bool

Operator contains a matrix that can be solved explicitly (True) or not (False)

Methods

__init__(M, iava[, dims, dir, dtype, inplace]) Initialize this LinearOperator.
adjoint() Hermitian 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.
mask(x) Apply mask to input signal returning a signal of same size with values at iava locations and 0 at other locations
matmat(X) Matrix-matrix multiplication.
matvec(x) Matrix-vector multiplication.
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() Transpose this linear operator.
mask(x)[source]

Apply mask to input signal returning a signal of same size with values at iava locations and 0 at other locations

Parameters:
x : numpy.ndarray or cupy.ndarray

Input array (can be either flattened or not)

Returns:
y : numpy.ma.core.MaskedArray

Masked array.