nnmf_sca

Nonnegative/sparse matrix factorization
325 Downloads
Updated 1 Feb 2018

View License

The goal of Blind Source Separation (BSS) methods is to estimate the physical sources of a mixing system. Most BSS models can be expressed algebraically as some form of factorization of a data matrix into the factor matrices:

X = ADB'
Without some a priori knowledge, or without specific constraints, it is not possible to estimate uniquely the original source signals. However, often X can be nonnegative and the corresponding hidden components of X may have a physical meaning only when nonnegative. In practice, both nonnegative matrix factorization, NNMF, and sparse component analysis, SCA, of data can be necessary for the underlying latent components to have a physical interpretation.
In standard NNMF we only assume nonnegativity of the factor matrices A and B, and unlike ICA, we do not assume that the sources are independent. In order to estimate factor matrices A and B we need to quantify a cost function, the distance between the data matrix and the NNMF model . The simplest distance measure is based on the Frobenius norm. Alternating minimization of such a cost leads to the Alternating Least Squares (ALS) algorithm: in this method, after an initial random initialization of A, a least squares solution for A with B fixed and for B with A fixed is carried out iteratively until the cost function reaches a minimum, or the difference in cost function between consecutive iterations becomes smaller than a given tolerance value, or a maximum number of iterations is reached. In each iteration, the negative elements of A and B and the off-diagonal elements of D are replaced with 0 or with a very small number.
A simple modification of this algorithm allows also the imposition of a sparseness constraint (with or without nonnegativity) on the A matrix. In this case at each iteration we set to 0 a given fraction of the smallest elements of A. This way, Nonnegative matrix factorization (NNMF) turns into Sparse component analysis (SCA). The algorithm is implemented in the function nnmf_sca.

nnmf_sca can be conveniently used to obtain a lower rank approximation of the original matrix X as ADB', with a diagonal matrix D, or constraining D = I. Examples of possible uses of nnmf_sca are contained in the live script NNMF_SCA_usage.

Cite As

Domenico Gatti (2026). nnmf_sca (https://www.mathworks.com/matlabcentral/fileexchange/65485-nnmf_sca), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2017b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Linear Algebra in Help Center and MATLAB Answers

NNMF_SCA/

Version Published Release Notes
1.0.0.0

Testing extended to release R2018a