pyproximal.projection.NuclearBallProj#
- class pyproximal.projection.NuclearBallProj(n: int, radius: float, maxiter: int = 100, xtol: float = 1e-05)[source]#
Nuclear ball projection
- Parameters
- n
int Number of elements of input vector
- radius
float Radius
- maxiter
int, optional Maximum number of iterations used by
scipy.optimize.bisect- xtol
float, optional Absolute tolerance of
scipy.optimize.bisect
- n
Notes
Given a Nuclear ball defined as:
\[N_{r} = \{ \mathbf{X}: ||\mathbf{X}||_* \leq r \}\]its orthogonal projection is:
\[P_{N_{r}} (\mathbf{X}) = \mathbf{U} diag(P_{L1_{r}} (\sigma(\mathbf{X}))) \mathbf{V}^H\]where \(\mathbf{U} diag(\sigma(\mathbf{X})) \mathbf{V}^H\) is the SVD decomposition of \(\mathbf{X}\).
Methods
__init__(n, radius[, maxiter, xtol])