 # Expression of a mixed norm in joint sparse problem

(Qimeng Fan) #1

The object function is

where X is a matrix of N by M, and n is the row index, so Xn denotes the n-th row of X. g() denotes the hyperbolic tangent function (tanh). Since the X is optimized iteratively, so the value being not relevant to X is calculated out of the {cvx_begin…cvx_end} and passed in the {cvx_begin…cvx_end} as constants (constant vectors). The problem is how can I express the square of norms of each row of X? The code is as follows:

``````        Qx1=constant_vector1;
Qx21 =constant_vector2;
Qx22 = constant_vector3;
cvx_begin quiet
variable x(N,M) complex
minimize(sum(Qx1+Qx21.*(norms(norms(X,2,2),2,1)-Qx22)));
subject to
norm(b - A*X,'fro') <= SNR_eps;
cvx_end
``````

It reports the error:

``````     Disciplined convex programming error:
Invalid computation: norms( {convex}, ... )
``````

Would you please tell me the reason or provide another method to express correctly?
Regards!

(Mark L. Stone) #2

`square_pos(norms(....))`

(Qimeng Fan) #3

Thank you very much! It works! But the optimization seems to be very slow and making it unappropriate for the iterative scheme. I wonder the main reasons affecting the efficiency of CVX. I used the embedded solver SDPT3 here. Will a commercial solver, say mosek, performs better?
p.s. Is there a handbook introducing functions specified for the cvx but not defined in MATLAB? Just like the help documentation in MATLAB.

(Erling D.Andersen) #4

Mosek is usually faster so it is worth trying.

(Mark L. Stone) #5

Please read the CVX Users’ Guide http://cvxr.com/cvx/doc/ in its entirety. `square_pos` and `norms` are both documented in http://cvxr.com/cvx/doc/funcref.html#new-functions .

In some cases, more details are available, especially on argument restrictions, using the help command, even for built-in MATLAB functions which have been extended for cvx variable or expression arguments.

For instance:

`help cvx/norm`

``````    Disciplined convex programming information:
norm is convex, except when P<1, so an error will result if
these non-convex "norms" are used within CVX expressions. norm
is nonmonotonic, so its input must be affine.``````