MATLAB Function Reference
  Go to function:
    Search    Help Desk 
nnls    Examples   See Also

Nonnegative least squares

Syntax

Description

x = nnls(A,b) solves the system of equations in a least squares sense, subject to the constraint that the solution vector x has nonnegative elements: . The solution x minimizes subject to .

x = nnls(A,b,tol) solves the system of equations, and specifies a tolerance tol. By default, tol is: max(size(A))*norm(A,1)*eps.

[x,w] = nnls(A,b) also returns the dual vector w, where and .

[x,w] = nnls(A,b,tol) solves the system of equations, returns the dual vector w, and specifies a tolerance tol.

Examples

Compare the unconstrained least squares solution to the nnls solution for a 4-by-2 problem:

The solution from nnls does not fit as well, but has no negative components.

Algorithm

The nnls function uses the algorithm described in [1], Chapter 23. The algorithm starts with a set of possible basis vectors, computes the associated dual vector w, and selects the basis vector corresponding to the maximum value in w to swap out of the basis in exchange for another possible candidate, until w 0.

See Also

\       Matrix left division (backslash)

References

[1] Lawson, C. L. and R. J. Hanson, Solving Least Squares Problems, Prentice-Hall, 1974, Chapter 23.



[ Previous | Help Desk | Next ]