This code is an implementation of Paper titled "Split Bregman algorithms for sparse/joint-sparse and low-rank signal recovery: Application in compressive hyper spectral imaging" presented in ICIP 2014.
This code solves the problem of recovering a low rank and sparse(in transform domain)matrix from its lower dimensional projections. There is no existing off the shelf algorithm for such a formulation.
Minimize (lambda1)||X||* + (lambda2)||Dx||_1 + 1/2 || A(X) - y ||_2^2
Formulated as an unconstarined nuclear norm and L1 minimization problem using Split bregman algorithm, formulation for the problem is as follows
% Minimize (lambda1)||W||* + (lambda2)||Dz||_1 + 1/2 || A(X) - y ||_2^2 + eta1/2 || W-X-B1 ||_2^2 +eta2/2 || W-Z-B2 ||_2^2
%W, Z are auxillary variable and B1, B2 are the bregman variable
Use of split bregman technique helps improve the accuracy and convergence behavior of the algorithm.
Anuprriya Gogna (2020). Recovery of Low rank and sparse Matrix (https://www.mathworks.com/matlabcentral/fileexchange/45127-recovery-of-low-rank-and-sparse-matrix), MATLAB Central File Exchange. Retrieved .
Dependencies are not specified in the description. The code requires Spot operator toolbox for Matlab (https://github.com/mpf/spot). Even after that there is an error in the demo.m:
Index exceeds the number of array elements (1). Error in opBlockDiag (line 26) of Demo.m
Thank you for sharing this code. However, function "opBinary" is not found. [Line 29 of DEMO.m].
Can you please check that?