pylops.Block#

pylops.Block(ops, nproc=1, dtype=None)[source]#

Block operator.

Create a block operator from N lists of M linear operators each.

Parameters
opslist

List of lists of operators to be combined in block fashion. Alternatively, numpy.ndarray or scipy.sparse matrices can be passed in place of one or more operators.

nprocint, optional

Number of processes used to evaluate the N operators in parallel using multiprocessing. If nproc=1, work in serial mode.

dtypestr, optional

Type of elements in input array.

Notes

In mathematics, a block or a partitioned matrix is a matrix that is interpreted as being broken into sections called blocks or submatrices. Similarly a block operator is composed of N sets of M linear operators each such that its application in forward mode leads to

\[\begin{split}\begin{bmatrix} \mathbf{L}_{1,1} & \mathbf{L}_{1,2} & \ldots & \mathbf{L}_{1,M} \\ \mathbf{L}_{2,1} & \mathbf{L}_{2,2} & \ldots & \mathbf{L}_{2,M} \\ \vdots & \vdots & \ddots & \vdots \\ \mathbf{L}_{N,1} & \mathbf{L}_{N,2} & \ldots & \mathbf{L}_{N,M} \end{bmatrix} \begin{bmatrix} \mathbf{x}_{1} \\ \mathbf{x}_{2} \\ \vdots \\ \mathbf{x}_{M} \end{bmatrix} = \begin{bmatrix} \mathbf{L}_{1,1} \mathbf{x}_{1} + \mathbf{L}_{1,2} \mathbf{x}_{2} + \mathbf{L}_{1,M} \mathbf{x}_{M} \\ \mathbf{L}_{2,1} \mathbf{x}_{1} + \mathbf{L}_{2,2} \mathbf{x}_{2} + \mathbf{L}_{2,M} \mathbf{x}_{M} \\ \vdots \\ \mathbf{L}_{N,1} \mathbf{x}_{1} + \mathbf{L}_{N,2} \mathbf{x}_{2} + \mathbf{L}_{N,M} \mathbf{x}_{M} \end{bmatrix}\end{split}\]

while its application in adjoint mode leads to

\[\begin{split}\begin{bmatrix} \mathbf{L}_{1,1}^H & \mathbf{L}_{2,1}^H & \ldots & \mathbf{L}_{N,1}^H \\ \mathbf{L}_{1,2}^H & \mathbf{L}_{2,2}^H & \ldots & \mathbf{L}_{N,2}^H \\ \vdots & \vdots & \ddots & \vdots \\ \mathbf{L}_{1,M}^H & \mathbf{L}_{2,M}^H & \ldots & \mathbf{L}_{N,M}^H \end{bmatrix} \begin{bmatrix} \mathbf{y}_{1} \\ \mathbf{y}_{2} \\ \vdots \\ \mathbf{y}_{N} \end{bmatrix} = \begin{bmatrix} \mathbf{L}_{1,1}^H \mathbf{y}_{1} + \mathbf{L}_{2,1}^H \mathbf{y}_{2} + \mathbf{L}_{N,1}^H \mathbf{y}_{N} \\ \mathbf{L}_{1,2}^H \mathbf{y}_{1} + \mathbf{L}_{2,2}^H \mathbf{y}_{2} + \mathbf{L}_{N,2}^H \mathbf{y}_{N} \\ \vdots \\ \mathbf{L}_{1,M}^H \mathbf{y}_{1} + \mathbf{L}_{2,M}^H \mathbf{y}_{2} + \mathbf{L}_{N,M}^H \mathbf{y}_{N} \end{bmatrix}\end{split}\]
Attributes
shapetuple

Operator shape

explicitbool

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

Examples using pylops.Block#

Describe

Describe

Describe
Operators concatenation

Operators concatenation

Operators concatenation
Operators with Multiprocessing

Operators with Multiprocessing

Operators with Multiprocessing