Hello,
I’m currently facing the simple constraint but I don’t know how to implement in CVX. The constraint is as follows
Trace(A^H * inv(X) ) <= C, where A is constant Hermitian positive definite matrix and X is variable of the Hermitian positive definite matrix. Could anyone help me how to implement that constraint?
Thanks so much,
If you use
trace_inv(X*inv(A^H)) <= C
I believe that would constrain X*inv(A^H)
to be psd, which I think. you don’t want, but if you do, great.
But I think you can modify the Schur complement approach to trace_inv
, as found in the code cvx/functions/@cvx/trace_inv.m
Re-write trace(inv(X)*inv(A^H))
as trace(sqrtm(inv(A^H))*inv(X)*sqrtm(inv(A^H)))
Then incorporate into Schur complement by changing
[Y,eye(n);eye(n),X] >= 0;
to
[Y sqrtm(inv(A^H));sqrtm(inv(A^H)) X] >= 0;
I.e., Add an extra argument to trace_inv
, and apart from any error checking, use this extra argument in place of eye(n)
. I don’t guarantee that this is correct. Consider this post to be for entertainment purposes only.
Edit: Other than the assumed dimensions, I guess what I describe is pretty much the same as what is done in matrix_frac
, which is at cvx/functions/@cvx/marix_frac.m
1 Like