Source code for pyproximal.proximal.Hankel
import numpy as np
from pyproximal.ProxOperator import _check_tau
from pyproximal import ProxOperator
from pyproximal.projection import HankelProj
[docs]class Hankel(ProxOperator):
r"""Hankel proximal operator.
Proximal operator of the Hankel matrix indicator function.
Parameters
----------
dim : :obj:`tuple`
Dimension of the Hankel matrix.
Notes
-----
As the Hankel Operator is an indicator function, the proximal operator corresponds to
its orthogonal projection (see :class:`pyproximal.projection.HankelProj` for
details).
"""
def __init__(self, dim):
super().__init__(None, False)
self.dim = dim
self.hankel_proj = HankelProj()
def __call__(self, x):
X = x.reshape(self.dim)
return np.allclose(X, self.hankel_proj(X))
@_check_tau
def prox(self, x, tau):
X = x.reshape(self.dim)
return self.hankel_proj(X).ravel()