This is the workhorse function for the higher-level function
fcnnls, which implements the fast nonnegative least-square
algorithm for multiple right-hand-sides from Van Benthem et al. (2004) to solve
the following problem:
min ||Y - X K||_F, s.t. K>=0where
YandXare two real matrices of dimensionn x pandn x rrespectively, and|.|_Fis the Frobenius norm.The algorithm is very fast compared to other approaches, as it is optimised for handling multiple right-hand sides.
.fcnnls(x, y, verbose = FALSE, pseudo = FALSE, eps = 0)
X K.pseudo=FALSE) the algorithm uses Gaussian
elimination to solve the successive internal linear problems, using the
solve function. If pseudo=TRUE the algorithm uses
Moore-Penrose generalized pseudoinverse from the
corpcor package instead of solve.A list with the following elements:
coefthe fitted coefficient matrix.
Psetthe set of passive constraints, as a logical matrix of
the same size as K that indicates which element is positive.
Van Benthem M and Keenan MR (2004). "Fast algorithm for the solution of large-scale non-negativity-constrained least squares
problems." _Journal of Chemometrics_, *18*(10), pp. 441-450. ISSN 0886-9383,