Matlab code for Optimality of Approximate Message Passing Algorithms for Spiked Matrix Models with Rotationally Invariant Noise.
The BAMP algorithms and Replica results are implemented base on the following papers
OAMP_demo: A MATLAB Live Script that implements the OAMP algorithm with both optimal Resolvent and polynomial estimators.
- OAMP.m: Optimal orthogonal message passing algorithm with Resolvent estimator
- OAMP_SE_FP: Solves Fixed points of SE and calculates corresponding free energy
- OAMP_Poly: Orthogonal message passing algorithm with Polynomial estimator
- OAMP_realcov_art_signal.m: Orthogonal message passing algorithm with Polynomial estimator for artificial signal and noise from real data.
- Real data are generated following the methodology described in Empirical Bayes PCA in high dimensions
BAMP code is based on Structured-PCA-
- BAMP_quartic.m/BAMP_sestic.m: Implements the BAMP algorithm for quartic/sestic potential with Rademacher prior, sparse Rademacher prior, and 2-Point prior.
- BAMP_SE_quartic.m/BAMP_SE_quartic_2Points: State evolution of BAMP with quartic potential for sparse Rademacher prior/2-Point prior.
- BAMP_SE_sestic.m/BAMP_SE_sestic_2Points: State evolution of BAMP with sestic potential for Rademacher prior/2-Point prior.
Replica code is based on Structured-PCA-
density_freecum.m/density_freecum_power6.m: Generates free cumulants of quartic/sestic potential. This code is from Structured-PCA-