A question about calculating schur complement in cvx objective function

Hello everyone,

My question is as follows.
Let X=[A, B; B’, C] be a positive definite matrix, A is k by k. Let S be the schur complement of A in X. I want to solve the problem:
minimize trace_inv(S)

I tried to use matrix_frac(x,Y) to calculate S. (Outside the cvx specification, the function ‘matrix_frac’ works when x is a matrix with proper dimensions. So S= A- matrix_frac (B’,C). But) When I use the matrix_frac function between ‘cvx_begin’ and ‘cvx_end’, there is always an error saying,

??? Error using ==> cvx.matrix_frac at 12
First argument must be a column vector.

Is there anyway that I can calculate the schur complement in cvx objective function?

Another question is ‘trace_inv’ requires that the argument is affine. How can I apply composition of convex functions, so that the argument can be relaxed to a concave function?

Thank you.

Yin Li

Without answering the question, let me just point out that allowing the first argument of matrix_frac to be a dimension-compatible matrix rather than a vector when used outside CVX is an undocumented feature.

Thanks, Mark. Yeah I didn’t see any document introducing this feature of matrix_frac, that ‘x’ could be a matrix. I just really hoped that could happen, so I tried and it worked.