Now we’re going to use cvx to solve for an X ,X=x*x‘; I defined a complex variable x in terms of complex. cvx error, X may not be convex, how do I represent X. thanks
You can’t explicitly form X=x*x'
in CVX unless x
is a row vector; I presume your x
is a column vector, which would result in x*x'
being non-convex. Depending on how x*x'
is going to be used, it’s possible there is some formulation in CVX which does not involve directly forming x*x'
. For example, trace(x*x')
can be formulated as square_pos(norm(x,'fro'))
.
Your fist task is to prove that the optimization problem you wish to enter in CVX is convex. Otherwise, CVX is not appropriate for the problem.
Can I just define X in terms of complex semidefinite?
You can declare X
to be complex semidefinite, but that won’t make it have any relation to x
, unless you perhaps use a semidefinite relaxation, which enforces X \succeq xx', but not X = xx', i.e., omits the rank one constraint, which is non-convex.