cvx_begin sdp
variable V(L, L) semidefinite;
expression Xi;
Xi = 0;
for k = 1:K
for i = 1:Ik
[U_bar_k_i, U_k_i, U_k_i_tilde, beta_k_i_star, chi_k_i_star] = compute_results(k, i, h_RB, g, pk_i, V_tilde, sigma1, L);
tr_UkVi = real(trace(U_k_i * V_tilde));
tr_UbarkVi = real(trace(U_bar_k_i * V_tilde));
tr_UktildeVi = real(trace(U_k_i_tilde * V_tilde));
disp(tr_UkVi)
disp(tr_UbarkVi)
disp(tr_UktildeVi)
expression tr_UkV;
expression tr_UktildeV;
tr_UkV = real(trace(U_k_i * V));
tr_UktildeV = real(trace(U_k_i_tilde * V));
C1_k_i = m_k(k) * log(1 + tr_UkVi / (tr_UbarkVi + sigma2));
C2_k_i = m_k(k) * (tr_UkVi / (tr_UbarkVi + sigma2));
Gamma = C1_k_i + C2_k_i * ( ...
(2 * sqrt(tr_UkV)/sqrt(tr_UkVi)) ...
- ((tr_UktildeV+sigma1^2) / (tr_UktildeVi + sigma1)) - 1);
E1_k_i = 0.5 * sqrt((2 * tr_UkVi) / (tr_UktildeVi + sigma1));
E2_k_i = 0.5 * sqrt((2 * tr_UkVi) / (tr_UkVi + sigma1));
Omega1 = E1_k_i + (beta_k_i_star * ( ...
sqrt(2 * tr_UkVi) + 2 * tr_UkV / sqrt(2 * tr_UkVi)) ...
- abs(beta_k_i_star)^2 * (tr_UktildeV + sigma1)) / (4 * E1_k_i);
Omega2 = E2_k_i + (chi_k_i_star * ( ...
sqrt(2 * tr_UkVi) + 2 * tr_UkV / sqrt(2 * tr_UkVi)) ...
- abs(chi_k_i_star)^2 * (tr_UktildeV + sigma1)) / (4 * E2_k_i);
if i ~= Ik
Xi_k_i = Gamma - Omega1;
else
Xi_k_i = m_k(k) * log(1 + tr_UkV) - Omega2;
end
Xi = Xi + Xi_k_i;
end
end
maximize(Xi);
subject to
for k = 1:K
for i = 1:Ik
[U_bar_k_i, U_k_i, ~, ~, ~] = compute_results(k, i, h_RB, g, pk_i, V_tilde, sigma1, L);
if i ~= Ik
real(trace(U_k_i * V)) >= gamma0 * (real(trace(U_bar_k_i * V)) + sigma1);
else
real(trace(U_k_i * V)) >= gamma0 * sigma1;
end
end
end
for k = 1:K
[~, U_k_i, ~, ~, ~] = compute_results(k, 1, h_RB, g, pk_i, V_tilde, sigma1, L);
U_k_i_temp1 = U_k_i;
[~, U_k_i, ~, ~, ~] = compute_results(k, 2, h_RB, g, pk_i, V_tilde, sigma1, L);
U_k_i_temp2 = U_k_i;
real(trace(U_k_i_temp1 * V)) >= real(trace(U_k_i_temp2 * V));
end
for l = 1:L
V(l, l) == 1;
end
cvx_end