Multiplication of a complex matrix by its conjugate transpose

I want to find a diagonal matrix P which should maximize the sum of the eigenvalues of the Hermitian matrix H*H’, obtained as shown below. The matrices G, H_ia, and H_ba are all complex and their dimensions are as indicated.

G = (n*m)
H_ia = (k*n)
H_ba = (k*m)

u = size(H_ia,2);
H = [];

cvx_begin %quiet
    variable P(u,u) complex diagonal
    for t = 1:1:size(H_ia,1)
        H = [H; ((H_ia(t,:)*P*G) + H_ba(t,:))];
    end
    maximize(lambda_sum_largest(H*H', size(H_ba,1)));
    subject to
        abs(diag(P)) == 1;
cvx_end 

Upon running, CVX fails at H*H’ and returns the error message below. Can anyone help with that?

Error using * (line 126)
Disciplined convex programming error:
Only scalar quadratic forms can be specified in CVX

Note: There has been a major edit of this answer, because originally when i read maximize, I was thinking minimize.

I’m not quite clear if you want the sum of all the eingenvalues of H*H', which is equal to trace(H*H'). if so

A little mathematical hocus pocus, and voila
lambda_sum_largest(H*H',n)
where n is the dimension of H,
can be reformulated as
square_pos(norm(H,'fro'))

But that is convex, and can’t be maximized in CVX.

abs(diag(P)) == 1; is a non-convex constraint, which I think you would have to handle by introducing binary variables.

Unless you meant minimize, not maximize, this problem is non-convex (due to the objective function), and can’t be handled by CVX.

1 Like

Thank you @Mark_L_Stone for prompt assistance and suggestions. Yes, you got me right, I wanted the sum of all eigenvalues of H*H'.

Unfortunately, my model needs the maximization of these eigenvalues. Meanwhile, let me see if I can relax some aspects of the model so that it can be handled by CVX.

If you wanted to maximize the sum of all the eigenvalues of a hermitian semidefinite matrix J, you could do that in CVX as mazimize(trace(H)), because trace is affine (both convex and concave). Aa I showed, in CVX, you can minimize sum of thw eigenvalues of H*H' for any complex H, but you can’ not maximize it in CVX

If you really want to maximize that, try using YALMIP to invoke a local or global nonconvex solver. Minimize -trace(H*H'), that will avoid the considerable complication and performance degradation of dealing with eigenvalues.Together with the non-convex constraint, I believe this can be formulated as a non-convex MIQP.

1 Like

Thank you so much @Mark_L_Stone

Let me try to do that