cagpjax.operators
Custom linear operators.
BlockDiagonalSparse
Bases: LinearOperator
Block-diagonal sparse linear operator.
This operator represents a block-diagonal matrix structure where the blocks are contiguous, and each contains a row vector, so that exactly one value is non-zero in each column.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
nz_values
|
Float[Array, N]
|
Non-zero values to be distributed across diagonal blocks. |
required |
n_blocks
|
int
|
Number of diagonal blocks in the matrix. |
required |
Examples
>>> import jax.numpy as jnp
>>> from cagpjax.operators import BlockDiagonalSparse
>>>
>>> # Create a 3x6 block-diagonal matrix with 3 blocks
>>> nz_values = jnp.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
>>> op = BlockDiagonalSparse(nz_values, n_blocks=3)
>>> print(op.shape)
(3, 6)
>>>
>>> # Apply to a vector
>>> x = jnp.ones(6)
>>> result = op @ x