Is there is a way to simplify the syntax of symmetric matrices in CVX

When I use CVX to deal with SDP problem, I often encounter many big symmetric matrices. It is time-consuming and error-prone to put the exact symmetric matrices inside the begin_cvx and end_cvx environment.

In the paper, we often simply it by using symbol * as an ellipsis for terms induced by symmetry.

My question is: If there is a similar simplification in CVX?

cvx_begin
variable joe_blow(2,2) symmetric
joe_blow(1,2) >= 2 % or more generally constrain ( == ) to some affine function of matrix or scalar variables 
minimize(sum(sum(joe_blow)))
joe_blow == semidefinite(2)
cvx_end

Of course this can be generalized to larger problems, and with block (matrix) elements of larger matrix.

Or build up the block diagonal matrix and strict upper triangle U as an expression from smaller matrix and scalar variables. Then form the expression block_diagonal_matrix + U + U'

There are other variations you can do.

I have no idea, what, if any, the differences in formulations provided by CVX to the solver are, and whether some ways of specifying the problems differ in CVX modeling time, solver time, and CVX and solver memory usage.

1 Like

Thanks for your reply. It sounds a good idea using block_diagonal_matrix + U + U'.