Monday, November 14, 2011

How To Wow Your Friends in High Places

This is a follow-up to this entry that required the installation of Sedumi. Since many people find it inconvenient to do so, I decided to have a simpler configuration with only two matlab/octave files: run_me.m and SL0.m. Just install the files in your working directory. Run the run_me.m file and check the difference in reconstruction between the \ operator, the pinv operator and the SL0 solver used in compressive sensing (many more solvers can be found here). Here we have an underdetermined system of 10 linear equations and 50 variables embodied by a matrix A (gaussian). The sparsity of the signal being sought is 2, i.e. this vector has 50-2 = 48 zeros in it. 

We solve for x in y = Ax and expect to recover x with only two components and 48 zeros..

This is what we get with x = A\y
Not good.

This is what we get with x = pinv(A) y
Not good either. 

This is what we get with x = SL0(A,y,...)

Am I hearing a WOW yet ?


5 comments:

Artificial Chicken said...

Never mind the plots are correct I was doing many holds! Sorry for that! ><

Anonymous said...

I ran your code, but could not get the Figure 3 as you showed. The solution of SL0 operation is not 2-sparse.

Igor said...

Have you tried several times ?

Unknown said...

so it works after 3 times?

Unknown said...

So it works after 3 times?

Printfriendly