Linear Operators¶
We provide a collection of linear operators with efficient JAX based implementations that are relevant in standard signal/image processing problems. We also provide a bunch of utilities to combine and convert linear operators.
This module is inspired by pylops although the implementation approach
is different.
A linear operator \(T : X \to Y\) connects a model space \(X\) to a data space \(Y\).
A linear operator satisfies following laws:
Thus, for a general linear combination:
We are concerned with linear operators \(T : \mathbb{F}^n \to \mathbb{F}^m\) where \(\mathbb{F}\) is either the field of real numbers or complex numbers. \(X = \mathbb{F}^n\) is the model space and \(Y = \mathbb{F}^m\) is the data space.
Such a linear operator can be represented by a two dimensional matrix \(A\).
The forward operation is given by:
The corresponding adjoint operation is given by:
We represent a linear operator by a pair of functions times and trans.
The times function implements the forward operation while the trans
function implements the adjoint operation.
An inverse problem consists of computing \(x\) given \(y\) and \(A\).
Data types¶
Represents a finite linear operator \(T : A -> B\) where \(A\) and \(B\) are finite vector spaces. |
Basic operators¶
|
Returns an identity linear operator from A to B |
|
Converts a two-dimensional matrix to a linear operator |
|
Returns a linear operator which can be represented by a diagonal matrix |
|
Returns a linear operator which maps everything to 0 vector in data space |
|
Returns an operator which flips the order of entries in input upside down |
|
Returns an operator which computes the sum of a vector |
|
Adds zeros before and after a vector. |
|
An operator which constructs a symmetric vector by pre-pending the input in reversed order |
|
An operator which computes y = x[I] over an index set I |
Signal processing operators¶
|
Computes a running average of entries in x |
|
Implements an FIR filter defined by coeffs |
Orthonormal bases and multi-base dictionaries¶
Returns an operator which represents the DFT orthonormal basis |
|
Returns an operator for a two-ortho basis dictionary consisting of Dirac basis and Fourier basis |
|
|
Returns an operator which represents the DCT-II orthonormal basis |
Returns an operator which represents the Walsh Hadamard Transform Basis |
Random compressive sensing operators¶
|
An operator which represents a Gaussian sensix matrix (with normalized columns) |
|
An operator which represents a Rademacher sensing matrix |
|
An operator representing a random orthonormal basis |
|
An operator whose rows are orthonormal (sampled from a random orthonormal basis) |
Derivatives (finite differences)¶
|
Computes the first derivative |
|
Convenience operators¶
These operators are technically not linear on \(\mathbb{F}^n \to \mathbb{F}^m\)
|
Returns the real parts of a vector of complex numbers |
Operator algebra¶
|
Returns the negative of a linear operator \(T = -A\) |
|
Returns the linear operator \(T = \alpha A\) for the operator \(A\) |
|
Returns the sum of two linear operators \(T = A + B\) |
|
Returns a linear operator \(T = A - B\) |
|
Returns the composite linear operator \(T = AB\) such that \(T(x)= A(B(x))\) |
|
Returns the transpose of a given operator \(T = A^T\) |
|
Returns the Hermitian transpose of a given operator \(T = A^H\) |
|
Returns the linear operator \(T = [A \, B]\) |
|
Returns the linear operator \(T = A^p\) |
Operator parts¶
|
Returns the i-th column of the operator T |
|
Returns the i-th column of the operator T |
Properties of a linear operator¶
These are still experimental and not efficient.
Computes the upper frame bound for a linear operator |