Why can’t the function “log(1+Pr_m.*gama_0./x)” be recognized by CVX. Pr_m and gama_0 are positive constant. It’s a convex function of x .

maybe you’d better use the function inv_pos,use command help inv_pos get more details about it

If you look under entropy at

you can see how to reformulate to something Cvx understand.

I use the function inv_pos,but an error : Illegal operation: log( {convex} ).

cvx_begin

variables Tau_Q Phi(K,N) de_hat(1,N)

for k=1:K

sum(alpha_A(k,:).*(Phi(k,：) - log(1+inv_pos(de_hat).*Pr_m.*gama_0)./log(2))) >= N*Tau_Q ;

end

cvx_end

where alpha_A(K,N) , Pr_m(1,N) , gama_0 are constant

The results showed：Illegal operation: log( {convex} )

I hope you can help me. Thank you very much

there have two ways

1:use slack variable ,define t=1/x,then add constrain t>=1/x;

2:Please refer to:Minimize log(1+1/x) where 0<x<inf

pleas read it carefully.

Thank you very much for your answer. I will read it carefully