dot-fcnnls: Internal Routine for Fast Combinatorial Nonnegative...

.fcnnlsR Documentation

Internal Routine for Fast Combinatorial Nonnegative Least-Squares


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:

\begin{array}{l} \min \|Y - X K\|_F\\ \mbox{s.t. } K>=0 \end{array}

where Y and X are two real matrices of dimension n \times p and n \times 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)



the coefficient matrix


the target matrix to be approximated by X K.


logical that indicates if log messages should be shown.


By default (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.


threshold for considering entries as nonnegative. This is an experimental parameter, and it is recommended to leave it at 0.


A list with the following elements:


the fitted coefficient matrix.


the 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, <URL:>, <URL:>.

NMF documentation built on March 31, 2023, 6:55 p.m.