cvx_begin

variable C2(2*K,1);*

variable q(2,1);

expression R_UAV_K(1,2K);

expression R_K_UAV(1,2*K);*

expression R_min(2K,1);

……

maximize (sum(R_min))

subject to

for k=1:1:2*K*

for i=1:1:2K

if A(k,i)==1

C2(k)<=C2(i);

end

end

end

` cvx_end`

The snippet you have shown is not sufficient to show why CVX would have issued that message. Perhaps in the omitted part of the program in the …, , you have something like `C2 = <something>`

, which by virtue of `=`

(assignment) rater than `==`

is overwriting (superseding) `C2`

rather than constraining it. Or there is a declaration `expression C2`

Please provide a complete reproducible problem, including all of the CVX output.

Thank you for your help.the complete code is as follows:

cvx_begin

variable C2(2*K,1);*

variable q(2,1);

expression R_UAV_K(1,2K);

expression R_K_UAV(1,2*K);*

expression R_min(2K,1);

for k=1:1:2*K

```
P(k)=1;
U(: , k)=[x_user(k);y_user(k)];
coor_L(k)=norm(U(:,k)-qL(: ,1));
XL(k)=norm(U(:,k)-qL(:,1))^2;
d(k)=(H^2+XL(k));
h(k)= p0./sqrt(d(k));
C2(k)=pow_pos(norms(U(:,k)-q(:,1)),2);
```

end

fai=sigma./(P_UAV*(p0^2));

delta=zeros(2*K,2*K);

z1=0;

for k=1:1:2*K*

for i=1:1:2K

z1=z1+b_down(i)*B(k,i);*

end

delta(k,i)=fai(H^2)+z1;

R_UAV_K(k)= log2(1+b_down(k)./(delta(k,i)+fai*XL(k)))-b_down(k)**fai*(C2(k)-XL(k))./((log(2))(delta(k,i)+b_down(k)+fai*XL(k))*(delta(k,i)+fai*XL(k)))

end

z2=0;

tao=zeros(1,2*K);*

for k=1:1:2K

for i=1:1:2*K*

z2= z2+A(k,i)*p0^2./d(i);*

end

tao(k)=z2;

R_K_UAV(k)=log2(1+P(k)*p0^2./((tao(k)+sigma)*(H^2+XL(k))))-p0^2P(k)(C2(k)-XL(k))./(log(2)*(H^2+XL(k))*(H^2+XL(k)+p0^2*P(k)));*

R_min(k)=min( R_K_UAV(2K-k+1),R_UAV_K(k));

end

```
maximize (sum(R_min))
subject to
for k=1:1:2*K
for i=1:1:2*K
if A(k,i)==1
C2(k)<=C2(i);
end
end
end
cvx_end
```

Owing to the version ,the multiplication sign * in the code is omitted

Instead of declaring it as

`variable C2(2*K,1);`

,

use

`expression C2(2*K,1);`

or equivalently,

`expression C2(2*K)`

Read the material on expression holders at

I have a question that in my code,I ought to define a variable like C2(2*K,1),but the same expression like variable also exists in the constraints,so how should I to avoid this conflict?

And if I choose to declare C2(2*K,1) as expression ,there exists no variable longer

if it is a variable, why did you define it as `C2(k)=pow_pos(norms(U(:,k)-q(:,1)),2);`

? this means it is not a variable, but an expression. pls read the cvx uses’ guide.

Oh，I found it.But I change it into C2(k)=pow_pos(norm(U(:,k)-q(:,1)),2) again.

I take the whole so-called expression C2(k)=pow_pos(norm(U(:,k)-q(:,1)),2) as a variable in which U(:,k) we have known its value ,just q(:,1) is a variable .Based on it ,do you think I should define a q(:,1) as a variable rather than C2(k)=pow_pos(norm(U(:,k)-q(:,1)),2)? I would appreciate if you could help

I have tried change variable C2(2*K,1) into expression C2(2*K,1)

But there still exists a fault as follows

Disciplined convex programming error:

Invalid constraint: {convex} <= {convex}

出错 <= (line 21)

b = newcnstr( evalin( ‘caller’, ‘cvx_problem’, ‘[]’ ), x, y, ‘<=’ );

出错 test (line 145)

C2(k)<=C2(i);