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
Y
andX
are two real matrices of dimensionn x p
andn x r
respectively, and|.|_F
is 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,