After exploiting SDR method, the considered convex problem can be effectively solved with a PSD solution (the variable is set to be PSD). Then, how can we get a rank-1 solution from the solution of PSD matrix (probably rank > 1)?

One way I heard from others is that to directly check the rank of the solution. If it happens to be rank 1, then we just choose the corresponding eigenvector to be the unique solution.

But if it’s not rank-1, what do we usually perform to approximate a rank-1 solution from the solved PSD, that satifies the object and the constraints as much as possible?

For example, my problem after SDR without rank-1 constraint will be shown below and it can be effectively solved by CVX, which is (as_ele_Tx is a known vector, Hm is a known matrix, J, epsilon are known scalars)

cvx_begin

variable F(J,J) hermitian semidefinite

variable u nonnegative

A = as_ele_Tx * as_ele_Tx’;

minimize( u )

subject to

trace(A* F) >= Z;

for i = 1:K

temp_H = Hm(i,: ) ’ * Hm(i,: ) + epsilon .* diag(ones(J,1)) ;

temp_H = 1/2 .* (temp_H + temp_H’);

trace(temp_H* F) <= u;

end

for ii=1:J

Q = zeros(J,J);

Q(ii,ii) = 1;

trace(Q* F) == P;

end

cvx_end