Hi All,

I am trying to solve a SDP problem using CVX.

The optimization problem contains many low-dimensional LMI constraints (~10 thousands LMI constraints, each matrix is 3x3 size).

Trying avoid using loop (run time will kill the application), I’m concatenating all those little matrices to one block diagonal sparse matrix, and expressing the constraints with this sparse matrix.

Unfortunately, CVX gives an error of “array exceeds maximum array size preference”.

Does CVX has some generalization which allowed to glue many LMI constraints, to one single compact form?

I would greatly appreciate any suggestions how to express all those low-dimensional LMI constraints.

For more clearness, here is the code:

cvx_begin SDP;

variable x(num_variables,1);

variable s; %slack

% create sparse matrix

f = x(f_indices);

d = inv_C*f;
t1 = reshape(d,[6,n]);
val_M = repmat(s,9,n);
val_M(1:3 , : ) = t1(1:3 , : );
val_M(4 , : ) = t1(2 , : );
val_M(5:6 , : ) = t1(4:5 , : );
val_M(7 , : ) = t1(3 , : );
val_M(8:9 , : ) = t1(5:6 , : );
val_M = val_M(:);
M = sparse(rows_M,cols_M,val_M,3*n,3*n);

% end create sparse matrix

minimize norm(x-x0,2)

subject to;

M >= sigma_min^2*eye(3*n);

M <= sigma_max^2*eye(3*n);

cvx_end;

Thanks in advanced,

ido