Look for help. How to deal with the following convex optimization problem with matlab and cvx tool with out Illegal operation: log( {complex affine} )?

Because the log function in the objective function can not process complex number, which directly code with it will result in Illegal operation: log( {complex affine} ).


So I wonder how to deal with the convex optimization problem?

Ask for help and thanks!

Neither argument of trace1 is real, even if B_k and C_k are Hermitian semidefinite. So the problem as stated doesn’t seem to make any sense, and that would still be the case with any optimization tool, convex/DCP or otherwise. The objective function must evaluate to a real scalar, but this objective function evaluates to a complex scalar.

The problem might make sense if real(...) were applied inside or outside of trace(...). and CVX would accept it. But I don’t know that that is the proper resolution here. It is “your” problem, in the sense that you found it in a paper or book, so it is your responsibility to understand and clarify the formulation so that it makes sense as an optimization problem - among other things, that requires the objective function to evaluate to a real scalar.

OK. I understand your reply and will have a try with your advice, thank you very much!

what if the matrixs B and C are hermitian too, then the result of the operation “trace” is real. But I can not describe this using CVX

@Zc_Lin Good point. If B and C are hermitian, CVX will accept the problem “directly entered”.