trace(hk(:,a)*hk(:,a)'*w*w')How should the traces of this matrix be represented in CVX?

h and w are both complex sequence vectors, h is a known quantity, and w is the required solution

By the cyclic permutation invariance of trace,
trace(hk(:,a)*hk(:,a)’*w*w’) = trace(w'*hk(:,a)*hk(:,a)’*w))
and the latter can be reformulated as
square_pos(norm(hk(:,a)’*w,'fro')), which can be used in CVX.

Depending on how the trace appears in your model, perhaps its square root can be used instead, in which case, the square_pos wouldn’t be applied.

1 Like

ok,thanks.If I ask for trace(HK-W), how should trace(hk*hk'-w*w') be calculated?

As you know, trace is linear, so trace(hk*hk'-w*w') = trace(hk*hk') - trace(w*w') .

It better be the case that only one of hk and w is a CVX variable or expression; because otherwise, the following expression is neither convex nor concave, and will not be accepted by CVX.

square_pos(norm(hk,'fro')) - square_pos(norm(w,'fro'))

If w is not a CVX variable or expression, there is no need for the reformulation of that term.

Also, if hk and w are vectors, then ,'fro' is not necessary, but does no harm.

Actually, in the expression in your first post, it better be the case that only one of hk and w is a CVX variable or expression, although it doesn’t matter which .

1 Like