How to epreess trace(A*X*((A)^H)*X) in cvx?

A and X are matirx, ^H denotes hermitian operator. X=X^H is variable.

`trace(X*A*A'*X) = square_pos(norm(A'*X,'fro'))`

However, `trace(A*X*A'*X)`

is neither convex nor concave in 2D or higher, as the two following examples show.

```
% Example 1 show it's not convex
A=[2 4;5 1];
X1=[4 1;1 1];
X2=[1 1;1 4];
X3=.5*X1+.5*X2;
disp(trace(A*X3*A'*X3))
4.665000000000000e+02
disp(.5*trace(A*X1*A'*X1)+.5*trace(A*X2*A'*X2))
3.855000000000000e+02
% Example 2: everything the same, except off-diagonal of X1 are zeros,
% and shows it's not concave
A=[2 4;5 1];
X1=[1 0;0 1];
X2=[1 0;0 4];
X3=.5*X1+.5*X2;
disp(trace(A*X3*A'*X3))
1.127500000000000e+02
disp(.5*trace(A*X1*A'*X1)+.5*trace(A*X2*A'*X2))
115
```

OKļ¼thank you very much!