Here’s a solution for some of the formulations (e.g., A*vec(X) ~= b), with the CVX code and the TFOCS code:
n = 10;
m = round(n/2);
A = randn(m,n^2);
b = randn(m,1);
epsilon = .1;
%% Solve in CVX
cvx_begin
cvx_precision best
variable X(n,n)
minimize trace(X)
subject to
X == semidefinite(n)
norm( A*vec(X) - b, Inf ) <= epsilon
cvx_end
X_CVX = X;
%% Solve in TFOCS
linear = linop_compose( linop_matrix(A), linop_vec([n,n]) );
affneF = { linear, -b };
objectiveF = prox_trace;
dualproxF = prox_l1(epsilon);
mu = 0.1;
opts = struct('tol',1e-6,'maxIts',100);
opts.errFcn = @(fcn,dual,primal) norm( primal-X_CVX,'fro');
opts.continuation = true;
x0 = zeros(n,n);
z0 = [];
[X,out,opts] = tfocs_SCD( objectiveF, affineF, dualproxF, mu, x0, z0, opts );