I want to express trace(Ah * H * K * Hh * A) where:
A = 3X1 complex variable
H = 3X3 complex matrix, diagonal
Hh, Ah = hermitian of H and A respectively
K = 3X3 real valued matrix
I used this code:
cvx_begin
variables A(3)
power1 = tr(A' * H * K * H' * A);
cvx_end
But it gives me an error:
Disciplined convex programming error:
Invalid quadratic form: must be a scalar.
I checked another question here:
Invalid quadratic form: must be a scalar (trace minimization)
which suggested using cholsky decomposition to express similar problem:
trace(LM'*A*LM) = trace(LM'*R'*R*LM) %if A is a positive definite,
which Then can be expressed in CVX by:
sum_square(R*LM)
I used the same technique by assuming:
cvx_begin
variables A(3)
[R,p] = chol(K)
% power1 = tr(A' * H * R' * R * H' * A) = tr (A' *H*K*H' * A )
power1 = sum_square(A'*H*R')
cvx_end
But i got the following error as sum_square work only on real arguments:
Error using cvx/sum_square (line 7)
Disciplined convex programming error:
The argument to SUM_SQUARE must be real and affine.
Error in testing_cholsky_for_trace (line 19)
power1 = sum_square(A'*H*R')