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(VR))
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.