I'm trying to solve this problem with yalmip.
Here I attach the function.
function [ z, status ] = zetaVector_yalmip(Hk, Q, Qp, log_const, Q_jl, P)
yalmip('clear')
n = size(Qp, 2);
N = size(Q, 1);
alpha = sdpvar(size(log_const, 1), 1);
z = sdpvar( n, 1 , 'full', 'complex' );
qi = sdpvar( N, 1 , 'full', 'complex' );
obj = real( sum(log2(1 + alpha.*log_const)) + log2(1 + norm(Hk'*Qp*z)^2) );
cons = [alpha >= 0, qi == Qp*z];
for m = 1:N
cons = [cons ,...
alpha.*Q_jl(:, m) + imag( qi(m, 1) )^2 + real( qi(m , 1) )^2 <= P ];
end
sol = optimize(cons, -obj, sdpsettings('solver','bmibnb'));
status = sol.problem;
z = value(z);
alpha = value(alpha);
end
If I do not specify any solver the solution is for z vector is zero, otherwise with 'bmibnb' status is -6.