How to resolve norm and trace minimize problem using CVX?


#1

Hi All,
can anybody help me to resolve the following norm and trace minimization probelm using CVX? my matalb code as follow:

cvx_begin
variable ZZ(LI,1) complex
minimize 1/2 * square_pos(norm((P_matrix .* toeplitz(ZZ) - RRV_INTER) , ‘fro’)) +
1/4 * trace(toeplitz(ZZ))
subject to
toeplitz(ZZ) == semidefinite(LI);
cvx_end

error information as following:
error use +
Disciplined convex programming error:
Illegal operation: {convex} + {complex affine}

error minimize
x = evalin(‘caller’,sprintf(’%s’, varargin{:}))

I would appreciate it if anybody can help me to solve this problem.
Thanks
Xie


(Mark L. Stone) #2

Given that Z is declared to be complex, 1/4 * trace(toeplitz(ZZ)) is complex. Therefore, it can not be an additive term of the objective function. I believe this is what the error message is referring to as `{complex affine} .

I don’t know what problem you actually want to solve, so I can not tell you the correct fix to make. But among other things, the objective function must evaluate to a real scalar. You are allowed to use real() in order to accomplish that.


#3

the formula is as follow:
%E6%8D%95%E8%8E%B7


(Mark L. Stone) #4

I forgot to mention that if ZZ is xomplex, I think you will need to use toeplitz(ZZ) == hermitian_semidefinite(LI); instead of toeplitz(ZZ) == semidefinite(LI); .


#5

thank you very much for your reply, but how to write the CVX as the formula given above?


(Mark L. Stone) #6

It’s your problem, so you will have to figure out the right way of implementing (13). Either don’t declare Z complex, or use real(trace(…)) or whatever else you figure out.

As I wrote above, the objective must evaluate to a real scalar. If you have an optimization problem which doesn’t satisfy that, you will have to figure out what to do.


#7

Thank youvery much, I will have a try