Source code for pyproximal.projection.Hankel

import numpy as np
from scipy.linalg import hankel


[docs]class HankelProj(): r"""Hankel matrix projection. Solves the least squares problem .. math:: \min_{X\in\mathcal{H}} \|X-X_0\|_F^2 where :math:`\mathcal{H}` is the set of Hankel matrices. Notes ----- The solution to the above-mentioned least squares problem is given by a Hankel matrix, where the (constant) anti-diagonals are the average value along the corresponding anti-diagonals of the original matrix :math:`X_0`. """ def __call__(self, X): m, n = X.shape ind = hankel(np.arange(m, dtype=np.int32), m - 1 + np.arange(n, dtype=np.int32)) mean_values = np.bincount(ind.ravel(), weights=X.ravel()) / np.bincount(ind.ravel()) return mean_values[ind]