This is an implementation of the PLCA algorithm as described in:

A general overview:
Smaragdis, P, B. Raj, and M.V. Shashanka, 2008.  Sparse and shift-invariant feature extraction from non-negative data. In proceedings IEEE International Conference on Audio and Speech Signal Processing, Las Vegas, Nevada, USA. April 2008.

Use of sparsity constraints:
Shashanka, M.V., B. Raj, P. Smaragdis, 2007.  Sparse Overcomplete Latent Variable Decoposition of Counts Data.  In Neural Information Processing Systems (NIPS), Vancouver, BC, Canada.  December 2007.

Use for separation of sounds:
Smaragdis, P. Raj, B. and Shashanka, M.V. 2007.  Supervised and Semi-Supervised Separation of Sounds from Single-Channel Mixtures.  In proceedings of the 7th International Conference on Independent Component Analysis and Signal Separation.  London, UK.  September 2007.

Disgustingly detailed report:
Smaragdis, P. and Raj, B. 2007. Shift-Invariant Probabilistic Latent Component Analysis, tech report.

All of the above are available in http://www.media.mit.edu/~paris/

See the examples.m script for some examples on how to use PLCA for simple experiments.  Before you start you need to compile the lambert W function in matlab using "mex -O lambertw_new.cpp"

Paris Smaragdis
paris@media.mit.edu
