About turboGAMP

turboGAMP extends the Generalized Approximate Message Passing (GAMP) framework proposed by Sundeep Rangan for solving the traditional compressed sensing (CS) problem. GAMP is a powerful method to estimate an unknown i.i.d. non-Gaussian vector from a (known) linear transformation of that vector observed through i.i.d. probabilistic measurement channels. turboGAMP embeds GAMP within a larger message passing algorithm that models non-i.i.d. "structured sparse" signals, using the "turbo CS" framework first proposed by Philip Schniter.

A unique feature of turboGAMP is its object-oriented MATLAB implementation. In this implementation, one combines objects of different types in a modular fashion to specify a particular probabilistic model. At present, there are four primary classes that together describe a complete model:

  • Signal - Defines the marginal distribution of each signal coefficient
  • Observation - Defines the scalar observation channel
  • SupportStruct - Defines the structure present in the support of the unknown signal
  • AmplitudeStruct - Defines the structure present in the non-zero amplitudes of the unknown signal
By combining different concrete instances of each of these classes, one arrives at a unique probabilistic model that can be effectively solved by turboGAMP.