Added input checks. Now the program throw exceptions for invalid inputs.
Added input for row vector. Now the program also takes row vector as input.
Fixed bug for compiling in Unix environment.
This is the main program for the ADMM decoder. This release of ADMM decoder includes the following key features:
Implementation of ADMM LP decoder, ADMM L1 penalized decoder, ADMM L2 penalized decoder and ADMM entropy penalized decoder
Implementation of Sum Product BP decoder, both original and non-saturating, and Min-Sum decoder.
Included two examples of simulation using these decoders.
The projection algorithm, which is the engine of the ADMM decoders, is also rewritten for MATLAB MEX. See below for details
See "ReadMe" for more details on file relationships. The "MersenneTwister.h" is used as a random number generator. It is NOT included in the zip files.
A pdf documentation is here.
Please contact Xishuo Liu, xliu94 AT wisc dot edu if you have any questions or feedback. Thank you.
This is the .cpp code for MATLAB. For more information on MEX, see this.
Compile mex function in Matlab:
(1) put the ProjPolytope.cpp in your MATLAB folder
(2) type command "mex - setup"
(3) choose your compiler (e.g. Visual Studio etc.)
(4) type command "mex ProjPolytope.cpp"
(5) alternatively, you can use g++ compiler and switch on "O3" by "mex -v CC=g++ LD=g++ COPTIMFLAGS='-O3' ProjPolytope.cpp"
Use the function:
x = ProjPolytope(v)
v -- a column vector (N-by-1) which is the vector you want to project
x -- results of the projection
Examples:
(1) x = ProjPolytope(2*rand(10,1));