As we know, when A is a hermitian semidefinite matrix, trace(X^H*A*X) is convex，but cvx can’t deal this expression, so how can i deal with it ? Thank you !

About this question: X^H denotes conjugate transpose operation; X is a matrix; A is a hermitian semidefinite matrix.

`trace(X'*A*X) = trace(X'*sqrtm(A)*sqrtm(A)*X) = norm(sqrtm(A)*X,'fro')^2`

So use ` square_pos(norm(sqrtm(A)*X,'fro'))`

If it appears by itself in the objective function, there is no need to square, and it is numerically better to use `norm(sqrtm(A)*X,'fro')`

, which has the same argmin.

If `A`

is strictly positive definite, then its Colesky factorization can be used instead of `sqrtm(A)`

,resulting in `square_pos(norm(chol(A)*X,'fro'))`

. However, the formulation with `sqrtm`

can always be used.

Thank you very much for you reply, it’s helpful.