pylops.Identity#
- class pylops.Identity(N, M=None, inplace=True, forceflat=None, dtype='float64', name='I')[source]#
Identity operator.
Simply move model to data in forward model and viceversa in adjoint mode if \(M = N\). If \(M > N\) removes last \(M - N\) elements from model in forward and pads with \(0\) in adjoint. If \(N > M\) removes last \(N - M\) elements from data in adjoint and pads with \(0\) in forward.
Note that the identity operator can handle both 1d and nd arrays; in the case of nd arrays, all elements of N must be larger or equal than those of M (or all elements of M must be larger or equal than those of N).
- Parameters
- N
int
ortuple
Number of samples in data (and model, if
M
is not provided). If a tuple is provided, this is interpreted as the data (and model) are nd-arrays.- M
int
ortuple
, optional Number of samples in model. If a tuple is provided, this is interpreted as the model is an nd-array. Note that when M is a tuple, N must be also a tuple with the same number of elements.
- 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).- forceflat
bool
, optional New in version 2.2.0.
Force an array to be flattened after matvec and rmatvec. Note that this is only required when N and M are tuples (input and output arrays are nd-arrays).
- dtype
str
, optional Type of elements in input array.
- name
str
, optional New in version 2.0.0.
Name of operator (to be used by
pylops.utils.describe.describe
)
- N
- Raises
- ValueError
If
M
is a tuple with different number of elements ofN
If
N
M
are non-identical tuples and some values are largers inN
and some inM
- NotImplementedError
If
N
orM
have type different from int or tuple/list
Notes
For \(M = N\), an Identity operator simply moves the model \(\mathbf{x}\) to the data \(\mathbf{y}\) in forward mode and viceversa in adjoint mode:
\[y_i = x_i \quad \forall i=1,2,\ldots,N\]or in matrix form:
\[\mathbf{y} = \mathbf{I} \mathbf{x} = \mathbf{x}\]and
\[\mathbf{x} = \mathbf{I} \mathbf{y} = \mathbf{y}\]For \(M > N\), the Identity operator takes the first \(M\) elements of the model \(\mathbf{x}\) into the data \(\mathbf{y}\) in forward mode
\[y_i = x_i \quad \forall i=1,2,\ldots,N\]and all the elements of the data \(\mathbf{y}\) into the first \(M\) elements of model in adjoint mode (other elements are
O
):\[ \begin{align}\begin{aligned}x_i = y_i \quad \forall i=1,2,\ldots,M\\x_i = 0 \quad \forall i=M+1,\ldots,N\end{aligned}\end{align} \]- Attributes
Methods
__init__
(N[, M, inplace, forceflat, dtype, name])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
()