Cannot perform the operation: {convex} .* {positive constant}

it looks convex. The . after w in the objective function, is extraneous, but does no harm, although it is suggestive of inattentive coding.

Whether your overall iterative scheme converges to anything, let alone a global or even local minimum of the original problem, is another matter.

Note that you should be telling us, not asking us, whether a problem is convex, as discussed at Why isn't CVX accepting my model? READ THIS FIRST!