# SDP use cvx must berealand nsupport norm or abs in aim function

``````N=4;
Nr=1;
hr=(randn(N,Nr)+1i*randn(N,Nr))/sqrt(2);
hd=(randn(M,Nr)+1i*randn(M,Nr))/sqrt(2);
G=(randn(N,M)+1i*randn(N,M))/sqrt(2);
Phi=diag(hr.')*G;
R=[Phi*transpose(Phi),Phi*hd;transpose(hd)*transpose(Phi),0];
cvx_begin sdp quiet
variable V(N+1,N+1) Hermitian;
minimize trace(V*R)
subject to
for j=1:N+1
V(j,j)==1;
end
V.'==hermitian_semidefinite(N+1);
cvx_end
``````

Expressions in objective functions must be real
maximize trace(VR)
if we write maximize abs(trace(V
R))
it said: Wrong use of type; Insufficient number of input parameters.
The variable V must be complex value.
Is this because my CVX version is wrong？

`R` is symmetric, not Hermitian. By what theory should `trace(V*R)` be real?

With `R` as constructed, `trace(V^R)` is complex affine, which means that `real(trace(V^R))` or `abs(trace(V^R))` can be minimized in CVX. But `abs(trace(V^R))` can’t be maximized in CVX because it is convex.

Which, if any, of these. makes sense for your problem is for you to determine, because it’s your problem. Do you really intend `R` to be hermitian rather than symmetric, but you constructed the simulated input data incorrectly? Note that `transpose(...)` is non-conjugate transpose, not the (more usual) conjugate transpose.

Thank you very much, I wrote conjugate transpose as transpose, and the objective function is real.