# How to construct a PSD matrix by using small size PSD matrixes

Dear All, I have the following matrix structure for my problem:

``````variable W1(6,6) hermitian semidefinite
variable W2(6,6) hermitian semidefinite
variable W3(6,6) hermitian semidefinite

W = [ W1(1:3,1:3)  W1(1:3,4:6)     oo              oo
W1(4:6,1:3)  W1(4:6,4:6)     W2(1:3,4:6)     oo
oo           W2(4:6,1:3)     W2(4:6,4:6)     W3(1:3,4:6)
oo           oo              W3(4:6,1:3)     W3(4:6,4:6) ];

minimize (real(trace(A*W)) + real(trace(B*W)) + real(trace(C*W)) )

subject to

W1(4:6,4:6) == W2(1:3,1:3);
W2(4:6,4:6) == W3(1:3,1:3);

W1 >= 0; W2 >= 0; W3 >= 0;
``````

My question is if I want to construct the W1, W2 and W3 matrixes by using smaller Wij matrixes and each Wij is 3 by 3 matrix and rank-1 matrix.
How can I do that and what constraints should I put on my new Wij matrixes?

Thanks in advance for any help.

Your question is confusing. I suppose it is related somehow to your previous thread How to calculate unknown vectors from semidefinite square matrix variable But I really don;t know what you are trying to do… But if what you are trying to do is non-convex, CVX can not handle it. (I don’t know, because I don’t know what you are trying to do. You can form a rank one matrix in CVX as an outer product of two vectors, providing that at most one of of the vectors in the product is a CVX variable or expression.)

As for your current program, I presume the `oo` entries in W are really each `zeros(3)`; So you should write them that way.

Are your constraints `W1 >= 0; W2 >= 0; W3 >= 0;` meant to be element-wise? If so, you will need something acceptable to CVX, such as `real(W1) >= 0` , etc. or whatever you want. If they are meant to indicated hermitian semidefinite, that is already accomplished in the variable declarations. And in any event, you have not specified sdp mode, so they will not be interpreted as such…

Yes, you are right. It is related with that my previous post and oo entries are `zeros(3)`. Also I forgot to mention that my cvx in sdp mode. Actually, I tried the following but I could not get rank 1 for all matrixes.

``````cvx_begin sdp
cvx_solver SeDuMi

variable W11(3,3) hermitian semidefinite
variable W12(3,3) hermitian semidefinite
variable W22(3,3) hermitian semidefinite
variable W23(3,3) hermitian semidefinite
variable W33(3,3) hermitian semidefinite
variable W34(3,3) hermitian semidefinite
variable W44(3,3) hermitian semidefinite

W = [ W11  W12     oo      oo
W12' W22     W23     oo
oo   W23'    W33     W34
oo   oo      W34'    W44 ];
``````

I got W1, W2 and W3 all have rank 1 after the solution for the original case, but when I tried the new structure setup I failed to get all matrixes to be rank 1.

In your previous thread, i showed you how to make matrices rank one by construction, which was possible because one of the variables being multiplied was not a CVX variable or expression. I have no idea what you are trying to do in this thread. I’m not a mindreader,so you have to tell us very explicitly and clearly what that is.

If you have a well-specified convex optimization model which you need help getting into CVX, perhaps we can help you.

Rank constraints are not convex.