Source code for pyproximal.proximal.Hankel

import numpy as np
from pylops.utils.typing import NDArray, ShapeLike

from pyproximal.projection.Hankel import HankelProj
from pyproximal.ProxOperator import ProxOperator, _check_tau


[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: ShapeLike) -> None: super().__init__(None, False) self.dim = dim self.hankel_proj = HankelProj() def __call__(self, x: NDArray) -> float: X = x.reshape(self.dim) return np.allclose(X, self.hankel_proj(X)) @_check_tau def prox(self, x: NDArray, tau: float) -> NDArray: X = x.reshape(self.dim) return self.hankel_proj(X).ravel()