Your objective function must evaluate to a real scalar. You haven't shown us what Hdd is, but based on the error message, it must be complex.
I don't know what your optimization problem is supposed to be.
maximize(trace(real(Hdd*Wd))) would be acceptable to CVX, but I have no idea if that's what you really want. You need to determine whether Wc and Wd need to be declared complex.
I'll let you worry about whether you need a for loop over k to incorporate C3 and C4. As it is, your code presumes k = 1. CVX won't complain about that, but it's a question of whether you have entered your problem correctly (fully).
Also note this from http://web.cvxr.com/cvx/doc/dcp.html#constraints
One or both sides of an equality constraint may be complex; inequality constraints, on the other hand, must be real. A complex equality constraint is equivalent to two real equality constraints, one for the real part and one for the imaginary part. An equality constraint with a real side and a complex side has the effect of constraining the imaginary part of the complex side to be zero.