# CVX. Disciplined convex programming error: Invalid constraint: {complex affine} >= {complex affine}

``````clc
clear all
N=3; %number of antennas
K=2; %number of users
channel=sqrt(1/2)*(randn(N,K)+1j*randn(N,K));
SINR_constraint_dB=(0:5:40);
N0=1;
for SINR_constraint_dB=0:5:40
SINR_constraint=10.^(SINR_constraint_dB/10);
cvx_solver sedumi
cvx_begin
for i=1:K
H(:,:,i)=channel(:,i)*channel(:,i)';
end
variable T(N,N,K) hermitian semidefinite
expression a(K+1);
a(1)=0;
for k=1:K
a(k+1)=a(k)+trace(T(:,:,k));
end
minimize a(K+1);
subject to
expression b;
for ii=1:K
b=trace(H(:,:,ii)*T(:,:,ii));
expression c(K+1);
c(1)=0;
for k=1:K
c(k+1)=c(k)+trace(H(:,:,ii)*T(:,:,k));
end
b >= SINR_constraint*((c(K+1)-b)+N0);
end
cvx_end
end
``````

There is error in this code:
Error using cvxprob/newcnstr (line 192)
Disciplined convex programming error:
Invalid constraint: {complex affine} >= {complex affine}
Error in >= (line 21)
b = newcnstr( evalin( ‘caller’, ‘cvx_problem’, ‘[]’ ), x, y, ‘>=’ );
Error in test1 (line 32)
b >= SINR_constraint*((c(K+1)-b)+N0);

How can I solve this problem?

The RHS of that inequality is complex, even though `H(:,:,i)` is real, because `T` is declared hermitian, so is complex.

You haven’t shown us what the value of `b` is, so I don’t know whether that is also complex.

I don’t know what you want the inequality to be. You can have inequalities for whichever or both of

``````real(LHS) >= real(RHS)
imag(LHS) >= imag(LHS)
``````

you want.

One or both sides of an equality constraint may be complex; inequality constraints, on the other hand, must be real.