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.
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 .