Cannot perform the operation: {complex affine} .* {convex}?

D violates CVX rules. CVX can’t handle {imaginary}*{convex) or {imaginary}*{concave) because those are neither concave or complex.

If h were real, CVX would accept D.

With h complex, CVX would accept real(RHS of D if it is rearranged to D = real(h * h') * phi2

I don’t know what you intend to do with D. So it is possible that the D as is in your program, but never explicitly formed, might still be compatible with a DCP-compliant convex optimization problem. But that would require not forming D, and proceeding directly to the way in which it is used, and seeing whether a DCP-compliant formulation can be created.

Your first step is to prove that your problem is a convex optimization problem. If not, CVX is not the right tool for it.