## Overview Edit

Generalized Approximate Message Passing (GAMP) is an approximate, but
computationally efficient method for estimation problems with *linear mixing*.
In the linear mixing problem an unknown vector, $ \mathbf{x} $, with independent components,
is first passed through linear transform $ \mathbf{z}=\mathbf{A}\mathbf{x} $
and then observed through a general probabilistic, componentwise measurement channel to yield
a measurement vector $ \mathbf{y} $. The problem is to estimate $ \mathbf{x} $
and $ \mathbf{z} $ from $ \mathbf{y} $ and $ \mathbf{A} $.
This problem arises in a range of applications including compressed sensing.

Optimal solutions to linear mixing estimation problems are, in general, computationally intractable as the complexity of most brute force algorithms grows exponentially in the dimension of the vector $ \mathbf{x} $. GAMP approximately performs the estimation through a Gaussian approximation of loopy belief propagation that reduces the vector-valued estimation problem to a sequence of scalar estimation problems on the components of the vectors $ \mathbf{x} $ and $ \mathbf{z} $. The GAMP methodology may also have applications to problems with structured sparsity and low-rank matrix factorization.

This project is intended to develop the theory and applications of GAMP. We also provide open source MATLAB software for others who would like to experiment with the algorithm.

## Downloading MATLAB files Edit

MATLAB files for implementing the GAMP algorithm can be found here.

Alternatively, you can also checkout the latest code from the SVN repository via:

svn co svn://svn.code.sf.net/p/gampmatlab/code/ gampmatlab

We would love for you to contribute to the package as well. If you would like access to check in new code, you will need to create an account on sourceforge and then mail Sundeep Rangan. Checking out code does not require special access.

## User's Guide and Examples Edit

Consult the Users' Guide for explanations of the code and examples.

## Publications Edit

The main paper describing the GAMP method is:

- Sundeep Rangan, Generalized Approximate Message Passing for Estimation with Random Linear Mixing, ISIT, St. Petersburg, Russia, July 2011.

Please cite this when using the code.

We are maintaining a publications page for all the papers describing theory and applications of the GAMP method as well as general references on approximate message passing and compressed sensing. Where possible, we will try to include links to the MATLAB code. The MATLAB code for some of the papers is included in the `gampmatlab`

package, although it may not always be commented particularly well.

## Contributors Edit

The MATLAB code and this website are possible through the contributions from a number of people including the following. Please email me if you would like to add to the GAMP project with checkin privileges for the Wiki page or SVN repository (regular users interested in just downloading the SVN repository or reading the Wiki pages requires no special access).

- Sundeep Rangan, NYU-Poly (main contact person)
- Alyson Fletcher, UC Berkeley
- Vivek Goyal, MIT
- Ulugbek Kamilov, EPFL
- Jason Parker, Ohio State
- Phil Schniter, Ohio State
- Jeremy Vila, Ohio State
- Justin Ziniel, Ohio State
- Mark Borgerding, Ohio State