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`