expression F(K)
expression G(K)
expression P(K)
for i=1:K
if i == 1
s_inter = 0;
G_tmp = 0;
else
s_inter = 0;
G_tmp = 0;
for j=1:i-1
s_inter = p(j).*(trace(Z(:,:,j)*q)+ sum(abs(v(:,i)).^2)) + s_inter;
G_tmp = G_tmp + Z(:,:,j).';
end
end
G_gradient = G_tmp/log(2)*(s_inter+1);
G(i) = real((s_inter+1))/log(2)+2*real(trace(G_gradient.'*(Q-q)));
F(i) = -(-rel_entr(1,(real(trace(Z(:,:,i)*Q)+sum(abs(v(:,i)).^2)))))/log(2);
end
%expression N
%norm_grad = two_norm_grad(q);
%N = norm_nuc(Q)-norm(q)+2*real(trace(norm_grad*norm_grad'*(Q-q)));
minimize sum(P)
subject to
diag(Q) == 1 ;
for i=1:K
0<=P(i)<=P_max;
end
for i=1:K
P(i)-exp(log(2)*(log(2.^(1+(sqrt(1/200)*qfuncinv(BER)/log(2)))-1)/log(2)+real(G(i)+F(i))))>=0;
end
%N = 0;
cvx_end
%Q
P
Q_ = Q;
P_ = P;
end
My code is as above.This is my output.
Successive approximation method to be employed.
Mosek will be called several times to refine the solution.
Original size: 8551 variables, 89 equality constraints
8 exponentials add 56 variables, 32 equality constraints
Make sure you are using CVX 2.2 and Mosek 9.x. Otherwise you would not be getting the output with Cones | Errors … which shows the Successive approximation method was used.
I change my version to CVX 2.2 and Mosek 9.1,but I don’t get the Cones|Erros…;Why is this?
CVX Warning:
Models involving “log” or other functions in the log, exp, and entropy
family are solved using an experimental successive approximation method.
This method is slower and less reliable than the method CVX employs for
other models. Please see the section of the user’s guide entitled
The successive approximation method
for more details about the approach, and for instructions on how to
suppress this warning message in the future.