# pylops.Identity¶

class pylops.Identity(N, M=None, dtype='float64', inplace=True)[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.

Parameters: N : int Number of samples in data (and model, if M is not provided). M : int, optional Number of samples in model. 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).

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: shape : tuple Operator shape explicit : bool Operator contains a matrix that can be solved explicitly (True) or not (False)

Methods

 __init__(N[, M, 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. 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.