I am new to the cvx part of programming. While using the CVX tool I have placed a constraint as `trace(A*B*A^H)<=1`

, the error message I am getting is

Invalid constraint: {complex affine} <= {real constant}

Error in <= (line 21)

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

Can someone help me out on the correct way to do this programming.

http://cvxr.com/cvx/doc/dcp.html#constraints

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

Without seeing your code and data, I can’t make a definitive diagnosis. But it must be the case that `trace(A*B*A^H)`

has some imaginary component, even though it may be just due to roundoff. First of all, there is no such thing in MATLAB or CVX as `^H`

to denote hemnitian transpose. So I will assume that you actually used `A`

'. Has `B`

been declared to be hemnitian? If not, then `trace(A*B*A')`

will not be real.

If you actually did use `trace(A*B*A^H)`

, then presumably `H`

was previously set in your MATLAB session to be some real or complex number, and `A*H`

would be the matrix `A`

raised to the power `H`

, which surely is not what you want.

If `B`

is declared hernitian and `trace(A*B*A') <= 1`

produces an error message, then roundoff level imaginary component and the error can be eliminated using `real(trace(A*B*A')) <= 1`