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

(Wangyan Li) #1

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?

(Mark L. Stone) #2
``````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
(Wangyan Li) #3

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