CVX: Convex optimization made simple
My first experience with this convex optimization package was the computation of the rate regions of a Multiple Access Channel and I was amazed how easy was to perform such complicated optimization problems. However the applications of CVX cover all scientific fields were a given optimization must be performed, even if the problem is non-convex it may be possible to relax it into a convex one.
For example currently I've been working in a problem of maximum likelihood estimation of a sparse set of parameters that results into an expression with a norm 0 term in it. The optimization problem can be simplified and relaxed to obtain a convex problem similar to the basis pursuit algorithm presented in [T06].
I will use the algorithm in [T06] to show how simple is the learning curve of CVX. The proposed algorithm is based on a norm 1 penalty:
Writing this optimization problem in Matlab reduces to
minimize( 1/2 * square_pos(norm(s-Phi*b,2)) + gamma * norm(b,1) )
Joel A. Tropp. Just Relax: Convex Programming Methods for Identifying Sparse Signals in Noise. IEEE Transactions on Information Theory, 2006.