FNNLS
Non-negative least-squares.
Contents
Description
Adapted from NNLS of Mathworks, Inc.
% x = fnnls(XtX,Xty) returns the vector X that solves x = pinv(XtX)*Xty % in a least squares sense, subject to x >= 0. % Differently stated it solves the problem min ||y - Xx|| if % XtX = X'*X and Xty = X'*y. % % A default tolerance of TOL = MAX(SIZE(XtX)) * NORM(XtX,1) * EPS % is used for deciding when elements of x are less than zero. % This can be overridden with x = fnnls(XtX,Xty,TOL). % % [x,w] = fnnls(XtX,Xty) also returns dual vector w where % w(i) < 0 where x(i) = 0 and w(i) = 0 where x(i) > 0. % % See also NNLS and FNNLSb % L. Shure 5-8-87 % Revised, 12-15-88,8-31-89 LS. % (Partly) Copyright (c) 1984-94 by The MathWorks, Inc. % Modified by R. Bro 5-7-96 according to % Bro R., de Jong S., Journal of Chemometrics, 1997, 11, 393-401 % Corresponds to the FNNLSa algorithm in the paper % % % Rasmus bro % Chemometrics Group, Food Technology % Dept. Dairy and Food Science % Royal Vet. & Agricultural % DK-1958 Frederiksberg C % Denmark % rb@kvl.dk % http://newton.foodsci.kvl.dk/rasmus.html % Reference: % Lawson and Hanson, "Solving Least Squares Problems", Prentice-Hall, 1974.
See also
CONDW, ERRORW_RANDOM, LOADW, SAVEW, WEIGHTGENERATE, PPFT, ADJPPFT, BASISFUNCTION.