# pyproximal.Orthogonal#

class pyproximal.Orthogonal(f, Q, partial=False, b=None, alpha=1.0)[source]#

Proximal operator of any function of the product between an orthogonal matrix and a vector (plus summation of a vector).

Proximal operator of any quadratic function $$g(\mathbf{x})=f(\mathbf{Qx} + \mathbf{b})$$ where $$\mathbf{Q}$$ is an orthogonal operator and $$\mathbf{b}$$ is a vector in the data space of $$\mathbf{Q}$$.

Parameters
fpyproximal.ProxOperator

Proximal operator

Qpylops.LinearOperator

Orthogonal operator

partialbool, optional

Partial (True) of full (False) orthogonality

bnp.ndarray, optional

Vector

alphafloat, optional

Positive coefficient for partial orthogonality. It will be ignored if partial=False

Notes

The Proximal operator of any function of the form $$g(\mathbf{x}) = f(\mathbf{Qx} + \mathbf{b})$$ with the operator $$\mathbf{Q}$$ satisfying the following condition $$\mathbf{Q}\mathbf{Q}^T = \alpha \mathbf{I}$$ (partial orthogonality) is :

$\prox_{\tau g}(x) = \frac{1}{\alpha} ((\alpha \mathbf{I} - \mathbf{Q}^H \mathbf{Q}) \mathbf{x} + \mathbf{Q}^H (\prox_{\alpha \tau f}(\mathbf{Qx} + \mathbf{b}) - \mathbf{b}))$

A special case arises when $$\mathbf{Q}\mathbf{Q}^T = \mathbf{Q}^T\mathbf{Q} = \mathbf{I}$$ (full orthogonality), and the proximal operator reduces to:

$\prox_{\tau g}(x) = \mathbf{Q}^H (\prox_{\tau f}(\mathbf{Qx} + \mathbf{b}) - \mathbf{b}))$
1

Daniel O’Connor, D., and Vandenberghe, L., “Primal-Dual Decomposition by Operator Splitting and Applications to Image Deblurring”, SIAM J. Imaging Sciences, vol. 7, pp. 1724–1754. 2014.

Methods

 __init__(f, Q[, partial, b, alpha]) affine_addition(v) Affine addition chain(g) Chain grad(x) Compute gradient postcomposition(sigma) Postcomposition precomposition(a, b) Precomposition prox(**kwargs) proxdual(**kwargs)