Hi,

I just started to learn CVX today. I have a minimum norm problem but the variable is 2D matrix instead of a vector in the example of CVX. I tried with the following code and it took “forever” without any error or warning displayed in matlab. Is it because the matrix is too big or just the way I use CVX was wrong?

%% CODE %%

m = size(M,2); % M is a 50*250 matrix
n = size(G,2); % G is a 50*3000 matrix

cvx_begin

variables J(n,m) gamma % J is a 250

*3000 matrix, gamma is a positive number*

minimize(norm(M-GJ,2)+gamma.*norm(J,2))

minimize(norm(M-G

subject to

gamma >0 % I can also give a range like 0<gamma<10

cvx_end

%% CODE %%

This problem is very similar to the example ( An optimal trade-off curve) in the quick start. The differences are 1) the second norm in my case is L2 instead of L1. 2) I have 2D matrix as the variable instead of x(n) in the example.

In this example you defined a range for “gamma” and the final solution is found by plotting the trade-off curve. This for me sounds like the so called “L-curve” technique. My question is would it be possible that I define gamma as a variable (the range of gamma could be defined in subject to as a constrain instead of a list of certain values) and CVX will deal with two variables (J(n,m) and gamma) and find the optimal gamma? In this way, I would expect a optimized way to find gamma.

I also tried to set gamma as a certain number like 0.01 and the code was running without any indication and nothing happened after 30 minutes. Could you please help on this issues. Thank you very much.

Best regards,

Zhengchen