Combines one or more LinearOperators in to a Block Diagonal matrix.

Inherits From: LinearOperator, Module

Used in the notebooks

Used in the tutorials

This operator combines one or more linear operators [op1,...,opJ], building a new LinearOperator, whose underlying matrix representation is square and has each operator opi on the main diagonal, and zero's elsewhere.

Shape compatibility

If opj acts like a [batch] square matrix Aj, then op_combined acts like the [batch] square matrix formed by having each matrix Aj on the main diagonal.

Each opj is required to represent a square matrix, and hence will have shape batch_shape_j + [M_j, M_j].

If opj has shape batch_shape_j + [M_j, M_j], then the combined operator has shape broadcast_batch_shape + [sum M_j, sum M_j], where broadcast_batch_shape is the mutual broadcast of batch_shape_j, j = 1,...,J, assuming the intermediate batch shapes broadcast. Even if the combined shape is well defined, the combined operator's methods may fail due to lack of broadcasting ability in the defining operators' methods.

Arguments to matmul, matvec, solve, and solvevec</