pyproximal.projection.NuclearBallProj#

class pyproximal.projection.NuclearBallProj(n, radius, maxiter=100, xtol=1e-05)[source]#

Nuclear ball projection

Parameters
nint

Number of elements of input vector

radiusfloat

Radius

maxiterint, optional

Maximum number of iterations used by scipy.optimize.bisect

xtolfloat, optional

Absolute tolerance of scipy.optimize.bisect

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])