toqito
toqito copied to clipboard
Feature: Check if matrix is an equilangular tight frame
Provide a function that takes in as input a matrix (as a numpy array) and returns True if the matrix constitutes an equilangular tight frame and False otherwise.
A function like the following could be written:
import numpy as np
def is_etf(mat: np.ndarray) -> bool:
"""Determine if matrix forms an equilangular tight frame (ETF).
Definition taken from the condition of:
http://users.cms.caltech.edu/~jtropp/conf/Tro05-Complex-Equiangular-SPIE-preprint.pdf
"""
# Each column has unit norm.
nrows, ncols = mat.shape[0], mat.shape[1]
for col in range(ncols):
if not np.isclose(np.linalg.norm(mat[:][col]), 1):
return False
# Columns are equilangular.
vals = []
for i in range(ncols):
for j in range(ncols):
if i != j:
vals.append(np.abs(inner_product(mat[:][i], mat[:][j])))
if len(set(vals)) > 1:
return False
# Matrix forms a tight frame.
return np.allclose(mat @ mat.conj().T, (ncols / nrows) * np.identity(nrows * ncols))
One would also need to provide proper documentation, examples, and unit tests for this function.