I don’t understand what you are doing. i have no idea what the Ci are (what does Trace(QiX) belong to Ci with i=1,2,…,M mean? Is that a lower and upper bound on the scalar value Trace(QX).?)
CVX will never tell you the intermediate value of the CVX variables at the iterations of the solver, nor do I see how they could be relevant to your problem.
What follows is my guess as to maybe approximately what your 2nd approach should be. “Tough luck” if it takes too long to go through the many iterations of the for loop - perhaps that is because it is a difficult problem and/or inefficient algorithm… Remember that you are solving a sequence of convex optimization problems as a way of trying to solve a (difficult) non-convex optimization problem. CVX will likely not be the fastest way, in computer execution time, to solve such a problem, but it is designed to allow you to model and solve problems with ease of use and relatively little human time.
X_old = eye(n);
variable X(n,n) semidefinite
minimize(trace(inv(X_old - delta*eye(n))X))
lower_bound(i) <= trace(CX) <= upper_bound(i) % or whatever trace(CX) in Ci is supposed to be
X_old = X;
I don’t understand why Ci would be different for different i. Perhaps your index i isn’t the same as index k, in which case I don’t know what you’re doing. trace(Q*X) is a scalar, so i don’t see how constraining it to simultaneously be in different (whatever) Ci 's (are) makes sense. I don’t come away with confidence that you are understanding whatever papers you are reading.