How to write log(1+Ax)? A are two constant.

What is a two constant?

Why not just doing

t=1+A*x;

t >= 0.0

log(t)

sorry,A is a constant

cvx can’t identify log

i want to know how to Convert log(1+Ax) to rel_entr（。 ）

You do not need to convert log(1+Ax) to rel_entr since CVX can accept log as I remember.

Post the error message you got. And maybe your complete code.

my error message is cvx can not deal with log ，i need help to convert it

I have try it,

CVX can not deal with log(1+X)

do you know how to deal with it?

You must show a full example that produces your error please. Otherwise really nobody has an idea how to help you. For example this works:

```
cvx_begin
variable X
maximize log(1+X)
subject to
X <= 10
cvx_end
```

cvx_begin

% cvx_solver mosek

variables P(K,N)

maximize (sum( A(k,:).*log2(phi(k,:).*P(k,:)+L_int(k, ) ))

```
subject to
for k = 1:K
delta*sum(A(k,:).*(L_int(k,:)+phi(k,:).*P(k,:))) >= data2(k);
end
for k = 1:K
beta* delta*sum( (L_int(k,:)-A(k,:))/SoD(k,:).*P(k,:) ) >= energy(k);
end
for k = 1:K
for n = 1:N
0 <= P(k,n) <=20;
end
end
for n = 1:N
P(1,n)== P(2,n) == P(3,n);
end
cvx_end
```

The function ‘log2’ corresponding to the input parameter of type ‘CVX’ is not defined.

I need help. I don’t know how to do it.

cvx_begin

% cvx_solver mosek

variables P(K,N)

maximize (sum( A(k,:).*log2(phi(k,:).*P(k,:)+L_int(k,: ) ) )

```
subject to
for k = 1:K
delta*sum(A(k,:).*(L_int(k,:)+phi(k,:).*P(k,: ) )) >= data2(k);
end
```

for k = 1:K

beta* delta*sum( (L_int(k,:)-A(k,:))/SoD(k,:).*P(k, ) >= energy(k);

end

```
for k = 1:K
for n = 1:N
0 <= P(k,n) <=20;
end
end
for n = 1:N
P(1,n)== P(2,n) == P(3,n);
end
```

cvx_end

The function ‘log2’ corresponding to the input parameter of type ‘CVX’ is not defined.

I need help. I don’t know how to do it.

log2(x)=log(x)/log(2), according to math.

Thanks, it works.

I am a newcomer to CVX

You have been a great help to me

I guess some elements of A(k, : ) are <= 0 but some are not. You can read the error that implied something like that. Maybe you can paste your complete code on here next time if convenient.

for K = 5

```
T = 70; N = 140; delta = T/N;
```

w = [50,150,200,450,475;

125,100,350,300,450];

```
for c = 1:K
data(1,c) = 200; % 初始化需要传输的数据量(bit)
end
for c = 1:K
data2(1,c) = 2^200; % 初始化需要传输的数据量(bit)
end
for c = 1:K
energy(1,c) = 0.0001; % 初始化需要传输的数据量(bit)
end
for c = 1:2
for n = 1:N
Q_int(c,n) = 500/N*n; % 初始化无人机路径
end
end
```

for k = 1:K

for n = 1:N

L_int(k,n) =1; % 初始化无人机路径

end

end

```
for a = 1:K
for n = 1:N
P_int(a,n) = 4; % 初始化发射功率
end
end
N_0 = -100; H = 20;
% 噪声功率（单位转换）
dBm = N_0 ;
sigma = power(10, dBm/10 ) /1000 ; % 单位 w
% Unit conversion of beta_0
beta = 1000 ;
% variables
%T = 75; N = 140;
delta = T/N;
% the square of distance between UAV and kth GN in time slot n
for k = 1:K
for n = 1:N
d(k,n) = norm( Q_int(:,n) - w(:,k) );
SoD(k,n) = power( d(k,n), 2 ) + power(H,2);
phi(k,n) = beta/sigma/SoD(k,n); % 计算 phi_k[n]
changshu1(k,n) = log2(L_int(k,n)+phi(k,n).*P_int(k,n))
changshu2(k,n) = beta*P_int(k,n)/SoD(k,n)
end
end
% 使用CVX工具包求解调度参数
cvx_begin
```

% cvx_solver mosek

variables A(K,N)

maximize (delta*sum( A(k,:).*changshu1(k, ))

subject to

```
% constraint 21
for k = 1:K
delta*sum( A(k,:).*changshu1(k,:) ) >= data(k);
end
for k = 1:K
delta*sum( (L_int(k,:)-A(k,:)).*changshu2(k,:) ) >= energy(k);
end
%13 14
for n = 1:N
sum(A(:,n)) <= 1;
end
% 19 20
for k = 1:K
for n = 1:N
A(k,n) >= 0;
end
end
cvx_end
```

E_1 = delta*sum( A(k,:).*changshu1(k, );

cvx_begin

% cvx_solver mosek

variables P(K,N)

maximize (delta*(sum( A(k,:).*(log(phi(k,:).*P(k,:)+L_int(k,:)) -0.2*(2^(sum(P(k,:))))))))

subject to

```
% constraint 21
for k = 1:K
delta*(sum( A(k,:).*(log(phi(k,:).*P(k,:)+L_int(k,:))))) >= data(k) ;
end
%13 14
for k = 1:K
beta* delta*sum( (L_int(k,:)-A(k,:))/SoD(k,:).*P(k,:) ) >= energy(k);
end
% 19 20
for k = 1:K
for n = 1:N
0 <= P(k,n) <=20;
end
end
for n = 1:N
P(1,n)== P(2,n) == P(3,n)== P(4,n) == P(5,n);
end
cvx_end
```

Thanks, you give me a great help.

I show my code,please check my code，thanks.

The output said it’s infeasible. Maybe it is infeasible.

It seems you use cvxquad. I doubt that is needed and it is better to use Mosek without cvxquad as described in the 2020 update on:

The output shows that CVX’s Successive Approximation method was used with SDPT3 as solver. `cvx_solver mosek`

is commented out.

But as @Erling wrote, it would be better to use Mosek (with CVX 2.2) thereby avoiding CVX’s Successive Approximation method, and getting a more robust and reliable solution.

As for infeasible problems, follow the advice, except for section 1, in https://yalmip.github.io/debugginginfeasible, which also applies to CVX.

I use MAC

I have been unable to install Mosek properly

I have an official license ，but i don’t know how to use it.

Do you have any experience in this field