Source code for hottbox.utils.generation.matrices

import numpy as np
from functools import reduce
from ...core.structures import Tensor, TensorCPD, TensorTKD, TensorTT


[docs]def toeplitz_matrix(r, c=None): r = np.asarray(r).flatten() if c is None: c = r.conjugate() else: c = np.asarray(c).flatten() vals = np.concatenate((r[-1:0:-1], c)) a, b = np.ogrid[0:len(c), len(r) - 1:-1:-1] place = a + b # place contains the positional indicies such that # that vals[place] would be a Toeplitz matrix. return vals[place]
[docs]def hankel_matrix(r, c=None): r = r[::-1] if c is not None: c = c[::-1] return toeplitz_matrix(r, c)[::-1]