Iteratively projects a non-negative matrix onto the intersection of non-negative matrices and matrices with orthonormal columns.

project_to_orthonormal_nonnegative(
  X,
  max_iter = 100,
  tol = 1e-04,
  constraint = "positive"
)

Arguments

X

A square numeric matrix with non-negative entries.

max_iter

Maximum number of iterations for the alternating projection.

tol

Tolerance for convergence. The projection stops if the change in the matrix norm is below this tolerance, or if max_iter is reached.

constraint

either or positive

Value

A matrix Y that is non-negative and whose columns are orthonormal, closest to X in a sense defined by the alternating projections.